ASP.NET DataGrid ClientID 值返回 null

ASP.NET DataGrid ClientID value returning null

我看到在 ASP.NET 中有很多关于获取 ClientID 的问题,但我查看的所有问题都对我的场景没有帮助。我对 ASP.NET 有点陌生,在 JavaScript.

中获取 DataGrid 的 ClientID 时遇到问题

希望论坛里有人帮我想办法。

在我的 aspx 页面上,我得到了一个数据网格:

 <div class="tblgrid" id="divItems">
    <asp:DataGrid ID="dgItems" runat="server" AutoGenerateColumns="False" GridLines="None">
    <Columns>
         <asp:BoundColumn HeaderText="EmpId" DataField="EmpId">
         </asp:BoundColumn>
         <asp:BoundColumn HeaderText="F_Name" DataField="F_Name">
         </asp:BoundColumn>
         <asp:BoundColumn HeaderText="L_Name" DataField="L_Name">
         </asp:BoundColumn>
         <asp:BoundColumn DataField="City" HeaderText="City">
         </asp:BoundColumn>
         .....
    </Columns>

当我在 JavaScript 中使用以下内容时,它会在警报消息中返回适当的 table 内部 HTML。

  alert(document.getElementById('ct100_PageContent_dgItems').innerHTML);

但是当我使用 ASP.NET ClientID 时,我收到一个空值异常,因为它抛出一个空值。

  alert(document.getElementById('<%=dgItems.ClientID %>').innerHTML); 

任何人都可以在这方面帮助我。

提前致谢。

而不是

alert(document.getElementById('<%=dgItems.ClientID %>').innerHTML);

.. 您可以给 DataGrid 一个 CSS class,例如 'dgrid' 并使用 jQuery class 选择器在客户端找到它?

如果document.getElementById('<%=dgItems.ClientID %>') 位于与 aspx 页面不同的 JS 文件中,那么 ASP.Net 引擎将无法解析该引用。它仅适用于嵌入在 .aspx 页面中的脚本。

然而,如果您不在页面上复制 DataGrid,那么您可以使用 ClientIDMode="static":

给它一个静态 ID 来解决这个问题
<asp:DataGrid ID="dgItems" ClientIDMode="static" runat="server" AutoGenerateColumns="False" GridLines="None">

然后用

引用它
document.getElementById('dgItems')