JavaScript实现DataGrid中添加CheckBox列(全选与否)

时间:2022-04-05 10:10:16

(一).功能

    1. JavaScript检索CheckBox并实现全选和全消功能

         用C#等写的CheckBox需要回发到服务端执行,
         而用JavaScript可以在直接客户端实现,效率高些

(二).代码

       1. DataGrid中的代码主要片段:

        <Columns>

            <HeaderTemplate>       //头模板代码
                   <asp:CheckBox id="chkHeader" runat="server" AutoPostBack="False"   //AutoPostBack设为假,不需要回发

                            onclick="javascript:SelectAll(this);"></asp:CheckBox>
            </HeaderTemplate>

           <ItemTemplate>            //项模板代码
                   <asp:CheckBox id="chkItem" runat="server"></asp:CheckBox>
           </ItemTemplate>

        </Columns>

2.  在当页加入:

  <script language="javascript">
       function SelectAll(tempControl)
       {
           //将除头模板中的其它所有的CheckBox取反 

            var theBox=tempControl;
             xState=theBox.checked;   

            elem=theBox.form.elements;
            for(i=0;i<elem.length;i++)
            if(elem[i].type=="checkbox" && elem[i].id!=theBox.id)
             {
                  if(elem[i].checked!=xState)
                        elem[i].click();
            }
  }  
</script>

3.当使用者选择好后台代码取得某列CheckBox的值:
for (int i = 0;i <this.DataGrid.Items.Count;i++)
{
        bool blnIfSelect = ((CheckBox)this.DataGrid.Items[i].FindControl("chkItem")).Checked;
        ....;   //这是可以根据blnIfSelect进行各种操作了        
}