單擊頭模板中的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>
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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.