为什么计数不准确
本文关键字:不准确 为什么 | 更新日期: 2023-09-27 18:08:11
思路是这样的:用户可以添加项并将它们填充到列表框控件中。如果用户没有条目,他们就不能提交表单。但是,当没有项目时,我使用:
添加一个人工项目:if (ds.Tables[0].Rows.Count == 0)
{
lstItems.Items.Insert(0, "No items have been added.");
}
else
{
lstItems.DataSource = ds;
lstItems.DataTextField = "ItemInfo";
lstItems.DataValueField = "Item_ID";
lstItems.DataBind();
}
之后,我想确保在提交之前有项目,但是数据集(ds
)在该函数/上下文中不可用。为了解决这个问题,我在类中声明了一个可以引用的全局变量(public int):
public int numItems = 0;
然后像这样设置:
numItems = ds.Tables[0].Rows.Count;
这样它就不会被我插入lstItems
中的一条人工记录抛出。然而,这不起作用。该值保持为0,即使上述条件语句的计算正确,表明行数为而不是 0。我做错了什么?有更好的方法吗?我考虑使用:
if (lstItems.Items.Count < 1)
{
// allow submission
}
但问题是,它与我的人工项目相匹配:
lstItems.Items.Insert(0, "No items have been added.");
那么,检查列表中是否有用户创建的项目的最佳方法是什么呢?
numItems初始化为0在回发时,您将无法获得按钮点击的值…
使用像这样的东西
ViewState["count"] = ds.Tables[0].Rows.Count;
和检查计数按钮点击
if(Convert.ToInt32(ViewState["count"]) > 0)
{
// your logic
}
当用户添加一个项目时,从列表中删除默认的项目。然后,您可以根据您的人工项目是否存在于列表中,而不是基于使用全局的项目计数来进行验证。