感谢以下建议:我有一个名为CBL_categ的复选框列表,其中包含20多个项目。我从中选择了一些项目,并按下按钮将下面的代码块关联起来。最后的总和总是为零。为什么呢?
protected void FButton_Click(object sender, EventArgs e)
{
int sum=0;
for (int i = 1; i < 20; i++)
{
if (CBL_categ.Items[i].Selected)
sum = sum + 1;
}
statusLabel.Text += " " + sum;
}
答案 0 :(得分:3)
我不会使用您提供的代码。它假设该列表总是中有20个项目。这可能导致越界错误,而不是所有项目都被计算,等等。我会用这样的东西:
protected void FButton_Click(object sender, EventArgs e)
{
int sum=0;
foreach(ListItem item in CBL_categ.Items)
{
if(item.Selected){
sum++;
}
}
statusLabel.Text += " " + sum;
}
听起来是在实际使用此方法之前重新绑定ListBox。因此,例如,如果您的Page_Load方法如下所示:
protected void Page_Load(object sender, EventArgs e)
{
//This gets called before your event on postback and will erase your selected items.
BindListBox();
}
这有意义吗?
编辑:
如果您的Page_Load看起来像是修改它,所以看起来这样可以解决问题:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack){
BindListBox();
}
}
答案 1 :(得分:1)
当你填充你的复选框列表时,请确保你也检查页面是否没有回发,例如在page_load上检查if(!Page.IsPostBack){填充你的列表} 否则你只会覆盖选择。