gridview第一列为复选框,id:ckb1
gridview下面有另一个复选框,id:ckbSelectAll
根据ckbSelectAll的状态使ckb1保持全选或全不选;
代码:
前台:
<asp:CheckBox ID="ckbSelectAll" runat="server" EnableViewState="False" OnCheckedChanged="CheckBox2_CheckedChanged" Text="全选(回车确认)" Font-Size="10pt" AutoPostBack="True" />后台:
    protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
    {
    
    foreach (GridViewRow row in GridView1.Rows)
        ((CheckBox)row.FindControl("ckb1")).Checked = ckbSelectAll.Checked;        
     ckbSelectAll.Text = ckbSelectAll.Checked ? "全选(回车确认)" : "取消全选(回车确认)";
    }现在的状况是:
选中ckbSelectAll 后ckb1能全部选中,取消选择后,ckb1还是保持选择

解决方案 »

  1.   

    取消选择的时候好像是没有执行
    用:
    response.write
      

  2.   


        <asp:GridView ID="grdArticle" runat="server"   width="100%" DataKeyNames="Title" 
           EmptyDataText="没有数据" AllowPaging="True" AutoGenerateColumns="False"
           BorderColor="#336699" BorderStyle="Solid" BorderWidth="1px" Font-Size="12pt" 
                PageSize="15"  >
           <Columns>
           <asp:TemplateField>
           <ItemTemplate>
           <asp:CheckBox ID="chkBox" runat="server" />
           </ItemTemplate>
           </asp:TemplateField>
           <asp:TemplateField HeaderText="文章ID">
           <ItemTemplate>
           <%#Eval("ID") %>'
           </ItemTemplate>
           </asp:TemplateField>
           <asp:TemplateField HeaderText="作者ID">
           <ItemTemplate>
           <%#Eval("AuthorID") %>
           </ItemTemplate>
           </asp:TemplateField>
           <asp:TemplateField HeaderText="文章标题">
           <ItemTemplate>
           <asp:TextBox ID="txtTitle" runat="server" Text='<%#Eval("Title") %>'></asp:TextBox>
           </ItemTemplate>
           </asp:TemplateField>
           </Columns>
           </asp:GridView>        
           <asp:CheckBox ID="chkTest" runat="server" AutoPostBack="True" 
                oncheckedchanged="chkTest_CheckedChanged" Text="全选" />       protected void chkTest_CheckedChanged(object sender, EventArgs e)
        {
            chkTest.Text = chkTest.Checked ? "取消全选" : "全选";
            foreach(GridViewRow row in grdArticle.Rows)
            {
                ((CheckBox)row.Cells[0].FindControl("chkBox")).Checked = chkTest.Checked;
            }
        }
      

  3.   

    请将CheckBox的AutoPostBack属性设置为true,然后再试,否则不能触发CheckedChanged事件
      

  4.   

    那是因为你在执行完CheckedChanged 后又将gridview有榜了一次,数据就会还原咯
      

  5.   

    请将CheckBox的AutoPostBack属性设置为true,然后再试,否则不能触发CheckedChanged事件,
    我认为你应该使用它的Onclick点击事件,因为浏览器的原因,CheckBox取消不会被回发
      

  6.   


    function SelectAllCheckBox()
            {
                for(i=0;i<form.elements.length;i++)
                {
                    if(form.elements[i].type=="checkbox")
                    {
                        form.elements[i].checked=true;
                    }
                }
            }
            function ReSelectCheckBox()
            {
                var form =document.forms[0];
                for(i=0;i<form.elements.length;i++)
                {
                    if(form.elements[i].type=="checkbox")
                    {
                        if(form.elements[i].checked)
                            form.elements[i].checked=false;
                        else
                            form.elements[i].checked=true;
                    }
                 }
             }
    for (int i = 0; i < dgrdMessage.Items.Count; i++)
            {
                CheckBox chkSelect = (CheckBox)dgrdMessage.Items[i].FindControl("chkSelect");
                if (chkSelect.Checked)
                {
                    MessageBll.DeleteData(3, Convert.ToInt32(dgrdMessage.DataKeys[dgrdMessage.Items[i].ItemIndex]));
                }
            }
      

  7.   

    <asp:CheckBox ID="ckbSelectAll" runat="server" EnableViewState="False" OnCheckedChanged="CheckBox2_CheckedChanged" Text="全选(回车确认)" Font-Size="10pt" AutoPostBack="True" /> 
    把EnableViewState="False" 去掉试试。