显示/隐藏按钮选择/取消选中复选框

时间:2009-08-20 16:48:45

标签: c# checkbox

我正在使用gridview,标题中有一个复选框(名称为Select all),用于选择项目模板中的所有复选框。当我单击此复选框时,它选择项目模板中的所有复选框并显示删除按钮,并在删除检查时隐藏删除按钮。现在,我想要的是,当我单击全选复选框然后如果我逐项删除项目模板中的所有复选框时,选择全部复选框检查以删除并删除按钮去隐藏。如果我从项目模板中选择一个或多个复选框,则删除按钮变为可见,如果我取消选中任何复选框,则除非所有复选框都未清除,否则删除按钮应该是可见的。

我尝试使用此代码但无法正常工作。请有人帮帮我吗?

此代码位于“全选”复选框上。

  protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)  
  {
    Button btnDel = (Button)ViewsStudGV.FooterRow.FindControl("btnDel");
    CheckBox allchk = (CheckBox)ViewsStudGV.HeaderRow.FindControl("chkSelectAll");

    CheckBox chk;

    foreach (GridViewRow rowItem in ViewsStudGV.Rows)
    {
        chk = (CheckBox)(rowItem.Cells[0].FindControl("chkSelect"));
        chk.Checked = ((CheckBox)sender).Checked;
        if (chk.Checked == true)
        {
            btnDel.Visible = true;                
            allchk.Text = "Select None";
        }
        else
        {
            btnDel.Visible = false;
            allchk.Text = "Select All";
        }
    }

}

此代码位于项目模板复选框

protected void chkSelect_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)ViewsStudGV.FindControl("chkSelect");
    Button btnDel = (Button)ViewsStudGV.FooterRow.FindControl("btnDel");
    CheckBox allchk = (CheckBox)ViewsStudGV.HeaderRow.FindControl("chkSelectAll");

    CheckBox c = (CheckBox)sender as CheckBox;
    if (c.Checked == true && allchk.Checked==true)
    {
        btnDel.Visible = true;
    }
    else if(c.Checked == false && allchk.Checked==true)
    {
        btnDel.Visible = false;
    }
    else if (c.Checked == true && allchk.Checked == false)
    {
        btnDel.Visible = true;
    }
    else if (c.Checked == false && allchk.Checked == false)
    {
        btnDel.Visible = false;
    }
}

1 个答案:

答案 0 :(得分:1)

在项目模板复选框更改功能中,您需要检查其他复选框以确定当前复选框是否是最后一次选中的复选框。 像这样:

protected void chkSelect_CheckedChanged(object sender, EventArgs e)
{
    CheckBox c = (CheckBox)sender as CheckBox;

    Button btnDel = (Button)ViewsStudGV.FooterRow.FindControl("btnDel");
    CheckBox allchk = (CheckBox)ViewsStudGV.HeaderRow.FindControl("chkSelectAll");

    if(c.Checked == false)
    {
        btnDel.Visible = true;                
        allchk.Text = "Select None";
    }
    else
    {
        CheckBox chk;

        foreach (GridViewRow rowItem in ViewsStudGV.Rows)
        {
                chk = (CheckBox)(rowItem.Cells[0].FindControl("chkSelect"));
                chk.Checked = ((CheckBox)sender).Checked;
        if (chk.Checked == true)
        {
            btnDel.Visible = true;                
            allchk.Text = "Select None";
            break;
        }
        else
        {
            btnDel.Visible = false;
            allchk.Text = "Select All";
        }
    }
    }
}