在我的用户控件中,有一个GridView。 当我在GridView的标题中选中复选框时,我想选中所有复选框。 我的用户控件可以在页面中多次使用。 所以我尝试这样。
我的GridView
<asp:GridView ID="GridView" runat="server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkHeader" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkEach" runat="server" />
</ItemTemplate>
.
.
这是我的C#代码
CheckBox chkAll = gvAttachment.Controls[0].Controls[0].FindControl("chkHeader") as CheckBox;
if (chkAll != null)
{
chkAll.Attributes.Add("onclick", "SelectAllChkBox('" + chkAll.ClientID + "','" + GridView.ClientID + "');");
}
这是我的javascript
function SelectAllChkBox(value , grid) {
for (var i = 1; i < grid.all.length; i++) {
grid.all[i].checked = value.checked;
}
}
但我收到了这个错误。
Unable to get value of the property 'length': object is null or undefined
我的代码有什么问题?
答案 0 :(得分:2)
参数网格是网格视图的id(字符串),这意味着您没有“全部”。长度适用于“网格”。您没有从c#传递对象。
您需要找到客户端的所有复选框,并根据true或false值设置check。
答案 1 :(得分:1)
数组从0开始:
function SelectAllChkBox(value , grid) {
for (var i = 0; i < grid.all.length; i++) {
grid.all[i].checked = value.checked;
}
}
答案 2 :(得分:0)
尝试此功能
function SelectAllChkBox(value , grid) {
var n = document.getElementById("grid").rows.length;
for (var i = 0; i < n; i++) {
grid.all[i].checked = value.checked;
}
}