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, чтобы найти его на стороне клиента?