ASP.NET DataGrid ClientID возвращает нулевое значение

Я вижу, что было много вопросов о получении ClientID в ASP.NET, но все вопросы, которые я посмотрел, не помогли в моем сценарии. Я немного новичок в ASP.NET и у меня есть проблемы с получением ClientID DataGrid в JavaScript.

Надеюсь, кто-то на этом форуме поможет мне найти способ.

На моей странице 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); 

Может ли кто-нибудь помочь мне в этом отношении.

Заранее спасибо.

2 ответа

Решение

Если document.getElementById('<%=dgItems.ClientID %>') находится в отдельном файле JS для файла aspx, то механизм ASP.Net не сможет разрешить ссылку. Он работает только для скриптов, встроенных в страницу.aspx.

Решение, однако, заключается в том, что если вы не дублируете DataGrid на странице, вы можете присвоить ему статический идентификатор, используя ClientIDMode="static":

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

а затем сослаться на это с

document.getElementById('dgItems')

Вместо

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

.. вы могли бы дать DataGrid CSS-класс, например, 'dgrid' и использовать селектор класса jQuery, чтобы найти его на стороне клиента?

Другие вопросы по тегам