1

感谢以下建议:我有一个名为 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;

        }
4

2 回答 2

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();
      }
 }
于 2012-06-12T20:04:05.223 回答
1

当您填充您的复选框列表时,请确保您正在检查页面是否不在回发中,即在 page_load 上检查 if(!Page.IsPostBack){populate your list} 之类的内容,否则您只会覆盖选择。

于 2012-06-12T20:01:30.173 回答