ASP.NET DataGrid ClientID 值返回 null

Posted

技术标签:

【中文标题】ASP.NET DataGrid ClientID 值返回 null【英文标题】:ASP.NET DataGrid ClientID value returning null 【发布时间】:2017-02-23 05:55:52 【问题描述】:

我看到有很多关于在 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 中使用以下内容时,它会在警报消息中返回适当的表格内部 html

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

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

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

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

提前致谢。

【问题讨论】:

查看此时页面上实际呈现的内容&lt;%=dgItems.ClientID %&gt;。也许你早点打电话,id还没有制作... ct100_PageContent_dgItems 是我在浏览器中的页面源上获取的 id,我同时使用 chrome 浏览器控制台和 javascript 文件来查看它是否返回任何内容.但 null 是它目前提供的唯一值。 您在这里做错了什么,使用该代码我们找不到它。如果你可能有它在线我们可以看到它,但你需要调试它并找到你的错误...... 【参考方案1】:

如果document.getElementById('&lt;%=dgItems.ClientID %&gt;') 与 aspx 页面的 JS 文件位于单独的 JS 文件中,则 ASP.Net 引擎将无法解析引用。它仅适用于嵌入在 .aspx 页面中的脚本。

但是,一个解决方案是,如果您没有在页面上复制 DataGrid,那么您可以使用 ClientIDMode="static" 给它一个静态 ID:

<asp:DataGrid ID="dgItems" ClientIDMode="static" runat="server" AutoGenerateColumns="False" GridLines="None">

然后引用它

document.getElementById('dgItems')

【讨论】:

【参考方案2】:

代替

alert(document.getElementById('&lt;%=dgItems.ClientID %&gt;').innerHTML);

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

【讨论】:

以上是关于ASP.NET DataGrid ClientID 值返回 null的主要内容,如果未能解决你的问题,请参考以下文章

asp.net中怎样调整datagrid 列的宽度

中继器中的 ASP.NET DataGrid

ASP.NET 2.0 - 带有 tbody/thead 的 DataGrid

在 asp.net 中的多个页面上打印具有许多列标题的 Datagrid 表

ASP.NET DataGrid 和自定义分页

ASP.NET 新手 - 无法从 SQL 数据库更新 DataGrid