处理来自Checkboxlist的所选项目

时间:2012-06-12 19:44:42

标签: c# asp.net visual-studio-2005

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

        }

2 个答案:

答案 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){填充你的列表} 否则你只会覆盖选择。