單擊頭模板中的checkbox,實現datalist中所有chebox的全選和取消

‍1、用c#實現:

aspx文件:

            <asp:DataList ID="dlistNews" runat="server" >
            <HeaderTemplate><table>
            <tr><td>
                <asp:CheckBox ID="chkAll" runat="server" Text="全選" OnCheckedChanged="chkAll_CheckedChanged" AutoPostBack="True" /></td> </tr>
            </HeaderTemplate>
            <FooterTemplate></table></FooterTemplate>
            <ItemTemplate>            <tr><td>
                <asp:CheckBox ID="chk" runat="server" /></td>。。。。
            </ItemTemplate>
        </asp:DataList>

響應函數:   

protected void chkAll_CheckedChanged(object sender, EventArgs e)
    {
      
            if (((CheckBox)sender).Checked==true)
            {

                foreach (DataListItem j in dlistNews.Items)
                {
                    CheckBox cb = (CheckBox)j.FindControl("chk");
                    cb.Checked = true;
                }
            }
            else
            {
                foreach (DataListItem j in dlistNews.Items)
                {
                    CheckBox cb = (CheckBox)j.FindControl("chk");
                    cb.Checked = false;
                }
            }       
}

開始時不懂用((CheckBox)sender).Checked來獲取chkAll的值,通過listItem的FindControl來查找,無論如何都找不到,查了很久才發現在listItem中查找的只是Itemtemplate中的控件,在headertemplate和footertemplate中的必須用其他方法。

查找headertemplate的:((CheckBox)dlistNews.Controls[0].FindControl("chkAll"))。這樣也可以得到chkAll的值。

查找footertemplate的:((CheckBox)dlistNews.Controls[dlistNews.Controls.Count - 1].FindControl("chkAll"))

2、用javascript實現

把chkAll的屬性修改爲:<asp:CheckBox ID="chkAll" runat="server" Text="全選" οnclick="SelectAll(this) "    AutoPostBack="False" />

    <script type="text/javascript" language="javascript">
    function SelectAll(box)
    {
      var table = document.getElementById("dlistNews");   //獲得datalist

      var checkes =table.getElementsByTagName("input");

     for(var i=0;i<checkes.length;i++)
      {
           if(box.checked == true)
            {
                if(checkes[i].type=="checkbox")
                {
                    checkes[i].checked=true;
                }
            }
            else
            {
                if(checkes[i].type=="checkbox")
                {
                   checkes[i].checked=false;
                }
            }
      }
</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章