#javascript #c# #asp.net #datagrid #clientid
#javascript #c# #asp.net #datagrid #идентификатор клиента
Вопрос:
Я вижу, что было много вопросов о получении идентификатора клиента ASP.NET но все вопросы, которые я просмотрел, не помогли моему сценарию. Я немного новичок в ASP.NET и у вас есть проблемы с получением идентификатора клиента DataGrid в JavaScript.
Надеюсь, кто-нибудь на этом форуме поможет мне найти способ.
На моей странице 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);
Кто-нибудь может мне помочь в этом отношении.
Заранее спасибо.
Комментарии:
1. посмотрите, что на самом деле отображается на странице в этом пункте
<%=dgItems.ClientID %>
. Возможно, вы вызываете его раньше, и идентификатор еще не создан…2. ct100_PageContent_dgItems — это идентификатор, который я получаю в источнике страницы в браузере, я использую как консоль браузера Chrome, так и файл javascript, чтобы узнать, возвращает ли он что-нибудь. но null было единственным значением, которое оно предоставляет в данный момент.
3. что-то вы делаете здесь неправильно, и с этим кодом мы не можем его найти. Если у вас может быть это онлайн, мы можем это увидеть, но вам нужно отладить его и найти свою ошибку…
Ответ №1:
Если файл document.getElementById('<%=dgItems.ClientID %>')
находится в отдельном файле JS для страницы aspx, тогда ASP.Net engine не сможет разрешить ссылку. Это работает только для сценариев, встроенных в страницу .aspx.
Однако решение заключается в том, что если вы не дублируете сетку данных на странице, вы можете присвоить ей статический идентификатор, используя ClientIDMode="static"
:
<asp:DataGrid ID="dgItems" ClientIDMode="static" runat="server" AutoGenerateColumns="False" GridLines="None">
а затем ссылайтесь на него с помощью
document.getElementById('dgItems')
Ответ №2:
Вместо того , чтобы
alert(document.getElementById('<%=dgItems.ClientID %>').innerHTML);
.. вы могли бы присвоить DataGrid CSS-класс, например ‘dgrid’, и использовать селектор классов jQuery, чтобы найти его на стороне клиента?