计算选中的复选框的数量

本文关键字:复选框 计算 | 更新日期: 2023-09-27 18:12:38

我想计算在我的asp.net页面上被选中的复选框的数量,如果count = 5然后将按钮状态从禁用更改为启用

我不明白,因为当我清除一个复选框中的复选(从5个复选框选中到4个复选框选中),按钮状态是启用的,而不是改变禁用状态。

我的代码如下。

我将非常感谢你在解决这个问题上给我的任何帮助。

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkTest = (CheckBox)sender;
    GridViewRow grdRow = (GridViewRow)chkTest.NamingContainer;
    int count = 0;
    if (chkTest.Checked)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            CheckBox chk = (CheckBox)row.FindControl("chkSelect");
            count++;
            if (chk.Checked && count == 5)
            {
                btnUpdate.Enabled = true;
                btnUpdate.CssClass = "enabledImageButton";
            }
        }
    }
}

编辑1 Page_Load代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridViewBind();
    }
}

计算选中的复选框的数量

检查循环后的计数,它应该像预期的那样工作:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkTest = (CheckBox)sender;
    GridViewRow grdRow = (GridViewRow)chkTest.NamingContainer;
    int count = 0;
    foreach (GridViewRow row in GridView1.Rows)
    {
       CheckBox chk = (CheckBox)row.FindControl("chkSelect");
       if (chk.Checked)
       {
         count++;
       }
    }
    if(count==5)
    {
        btnUpdate.Enabled = true;
        btnUpdate.CssClass = "enabledImageButton";
    }
    else
    {
        btnUpdate.Enabled = false;
        btnUpdate.CssClass = "disabledImageButton";
    }
}

如果你取消选中,那么它将不会出现在

 if (chkTest.Checked)
 {

当你删除检查时,你还需要做计算

你没有代码来禁用按钮。试试下面的代码

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkTest = (CheckBox)sender;
    GridViewRow grdRow = (GridViewRow)chkTest.NamingContainer;
    int count = 0;
    btnUpdate.Enabled = false;
    foreach (GridViewRow row in GridView1.Rows)
    {
       CheckBox chk = (CheckBox)row.FindControl("chkSelect");
       if (chk.Checked)
       {
          count++;
          if(count >=5)
          {
             btnUpdate.Enabled = true;
             btnUpdate.CssClass = "enabledImageButton";
             break;
          }
       }
    }
}

您正在计算与您计数的复选框的数量,而不是选中复选框的数量因此,如果第5个复选框被选中,无论前4个复选框的状态如何,你的代码总是会"触发"。

看起来你想要:

foreach (GridViewRow row in GridView1.Rows)
{
    CheckBox chk = (CheckBox)row.FindControl("chkSelect");
    if (chk.Checked) count++;
    if (count >= 5) 
    {
        btnUpdate.Enabled = true;
        btnUpdate.CssClass = "enabledImageButton";
        break; //Avoid hitting more rows than necessary
    }
}

这意味着你将只有启用如果至少5被选中,因为其他海报说你没有什么可以禁用它,所以它将保持启用