Когда флажок установлен, получить значение сетки данных, используя jquery

У меня есть поле шаблона флажка в gridview в C#, это поле также имеет скрытое поле с идентификатором позади него. Я хочу использовать jQuery для вызова события по щелчку флажка, чтобы получить значение ключа данных, чтобы я мог выполнить запрос через jQuery и добавить отмеченный элемент в базу данных. Я видел примеры, которые получают datakeys, когда нажимается общая кнопка, но я хочу, чтобы это происходило при каждом переключении флажка в пределах сетки. В настоящее время я получаю "неопределенный" при попытке доступа к идентификатору.

C# в сетке

<ItemTemplate>
     <asp:CheckBox ID="CheckBox" CssClass="checkbox" runat="server" />
     <asp:HiddenField ID="idnum" runat="server" Value='<%# Eval("id") %>' />
</ItemTemplate>

JQuery

$(document).ready(function () {
           var gridResults = document.getElementById('<%= grdResults.ClientID %>');

           $("form input:checkbox").click(function (e) {
                   var id = $(this).next('#idnum').val();
                   alert(id);
                   return false;                                        
           });
}); 

2 ответа

Решение

Если есть несколько полей с ID="idnum" вы, вероятно, должны изменить это на class="idnum", После добавления класса вы можете получить значение, используя:

var gridResults = $(e.target).next('.idnum').val();

Если idnum это просто пример, который отличается для каждого поля, вы можете просто использовать var id = $('#idnum').val();

РЕДАКТИРОВАТЬ: изменено e.target.next('.idnum').val(); в $(e.target).next('.idnum').val(); преобразовать элемент в объект jQuery

// Это скрипт для получения значения datakeyname при событии флажка в GridView

<script type="text/jscript">
        $(document).ready(function () {
            var gridResults = document.getElementById('<%= grdCateogry.ClientID %>');

            $("form input:checkbox").click(function (e) {
                var id = $(this).next($('#IDVal')).val();
                alert(id);
                return false;
            });
        });
    </script>

// Это GridView

<asp:GridView ID="grdCateogry" DataKeyNames="CategoryId" runat="server">
    <Columns>
      <asp:TemplateField HeaderText ="Try" ItemStyle-Width="20px">
         <ItemTemplate>
           <asp:CheckBox ID="chkSelect" runat="server" />   
           <asp:HiddenField ID="IDVal" runat="server" Value='<%# Eval("CategoryId") %>' />
          </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

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