无法获取属性'的值;长度':对象为null或未定义-Javascript错误

Unable to get value of the property 'length': object is null or undefined - Javascript Error

本文关键字:null 错误 对象 -Javascript 未定义 长度 获取 属性 的值      更新时间:2023-09-26

在我的用户控件中,有一个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

我的代码出了什么问题?

参数grid是网格视图的id(字符串),这意味着您没有"all"。不过,长度在"网格"上起作用。您没有从c#传递对象。

您需要在客户端找到所有复选框,并根据true或false值设置checked。

数组从0:开始

function SelectAllChkBox(value , grid) {
    for (var i = 0; i < grid.all.length; i++) {
        grid.all[i].checked = value.checked;
    }
}

尝试此功能

function SelectAllChkBox(value , grid) {
    var n = document.getElementById("grid").rows.length;
    for (var i = 0; i < n; i++) {
        grid.all[i].checked = value.checked;
    }
}