ASP.NET DataGrid ClientID值返回null

时间:2016-10-13 22:57:12

标签: javascript c# asp.net datagrid clientid

我看到有很多关于在ASP.NET中获取ClientID的问题,但我看到的所有问题对我的场景没有帮助。我对ASP.NET有点新,并且在使用JavaScript获取DataGrid的ClientID方面存在问题。

希望在这个论坛中有人帮助我找到方法。

在我的aspx页面上,我得到了一个datagrid:

 <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); 

任何人都可以帮助我。

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果wp_redirect( get_edit_post_link( $post_id ) ); exit; 是在一个单独的JS文件到aspx页面,然后ASP.Net引擎将无法解析引用。它仅适用于.aspx页面中嵌入的脚本。

然而,解决方案是,如果您没有在页面上复制DataGrid,那么您可以使用document.getElementById('<%=dgItems.ClientID %>')为其提供静态ID:

ClientIDMode="static"

然后用

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

答案 1 :(得分:0)

而不是

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

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