计算选中的复选框的数量

时间:2014-07-11 08:19:21

标签: c# asp.net checkbox

我想计算在我的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();
    }
}

4 个答案:

答案 0 :(得分:2)

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

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";
    }
}

答案 1 :(得分:0)

您没有禁用该按钮的代码。请尝试以下代码

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;
          }
       }
    }

}

答案 2 :(得分:0)

如果您取消选中,则不会进入此

 if (chkTest.Checked)
 {

当您删除支票时,您还需要进行计算。

答案 3 :(得分:0)

您计算的是您计算的复选框数量,而不是已选中复选框的数量 因此,您的代码总是会被解雇。如果选中第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个,那么你只会启用,因为其他海报已经说你没有任何东西可以禁用它,所以它会保持启用状态。