这是一个想法:用户可以添加项目并填充在列表框控件中。如果用户没有项目,则他们应该无法提交表单。但是,如果没有使用以下项目,我会添加一个人工项目:
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();
}
稍后,我想确保在提交之前有项目,但DataSet(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.");
那么检查列表中是否有任何用户创建的项目的最佳方法是什么?
答案 0 :(得分:2)
numItems被初始化为 0 ,您无法在按钮点击中获得该值...
使用像这样的东西
ViewState["count"] = ds.Tables[0].Rows.Count;
并检查点击按钮上的计数
if(Convert.ToInt32(ViewState["count"]) > 0)
{
// your logic
}
答案 1 :(得分:0)
当用户添加项目时,请从列表中删除您的默认项目。然后,您可以根据您的人工项目是否存在于列表中,而不是使用全局对项目计数进行验证。