处理复选框列表中的选定项目

本文关键字:项目 复选框 列表 处理 | 更新日期: 2023-09-27 18:36:53

>感谢您对以下内容的建议:我有一个名为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;
        }

处理复选框列表中的选定项目

我不会使用您提供的代码。 它假设该列表中始终包含 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();
      }
 }

当您填充复选框列表时,请确保您也在检查页面是否未回发,即page_load选中类似 if(!Page.IsPostBack){填充您的列表}否则,您只会覆盖选择。