2016-10-13 43 views
4

我看到在ASP.NET中獲取ClientID時出現了很多問題,但我查看的所有問題都無助於我的方案。我對ASP.NET有點新,並且在使用JavaScript獲取DataGrid的ClientID時遇到了問題。返回NULL的ASP.NET 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); 

任何人都可以在這方面幫助我。

在此先感謝。

+0

看到引用它是什麼實際上在這一點上在頁面上呈現'<%= dgItems.ClientID%>'。也許你提前打電話給它,並且ID尚未製作出來...... – Aristos

+0

_ct100_PageContent_dgItems_是我在瀏覽器中的頁面源代碼中獲得的ID,我使用Chrome瀏覽器控制檯和JavaScript文件來查看它是否正在返回任何東西。但null是目前唯一提供的價值。 – David

+0

你在這裏做錯了什麼,並與該代碼,我們無法找到它。如果你有可能在網上看到它,我們可以看到它,但你需要調試它並找到你的bug ... – Aristos

回答

1

如果document.getElementById('<%=dgItems.ClientID %>') 位於單獨的JS文件中,那麼ASP.Net引擎將無法解析該引用。它只適用於.aspx頁面內嵌的腳本。

一個解決方案是不過如果你不是在頁面上覆制數據網格,那麼你可以給它使用ClientIDMode="static"靜態ID:

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

,然後用

document.getElementById('dgItems') 
0

而不是

​​

..你可以給DataGrid中的一個CSS類,例如「dgrid」,並使用一個jQuery類選擇找到它的客戶端?