asp.net gridview tr id уникален для jQuery - PullRequest
1 голос
/ 27 августа 2010

Я создал сетевое представление ASP.NET WebForms, и мне нужно получить доступ к каждой строке (например, <TR>) таблицы в javascript / jquery .... К сожалению, похоже, что <tr>, созданные с помощью gridview, имеют одинаковый идентификатор!

Есть ли способ изменить это? Любые идеи, как я мог получить доступ к определенной строке в JavaScript (в основном я пытаюсь вызвать метод и передать ему идентификатор строки, к которой он должен получить доступ).

--- Подробнее ---

 <asp:GridView ..>
    <Columns>
      <asp:Templatefield>
        <ItemTemplate>
          <asp:DropDownList onchange="javascript:EnableControls('ROWIDHERE')">
          </asp:DropDownList>
        </ItemTemplate>
      </asp:TemplateField>
    </Columns>
</asp:GridView>

Это единственное изменение в выпадающем списке, которое должно знать, в какой строке он находится!

Ответы [ 4 ]

1 голос
/ 27 августа 2010

Если вы позволите jQuery управлять вашими обработчиками, вы можете сделать что-то подобное, используя .closest().

$('select').change(function() {
    var $tr = $(this).closest('tr'); 
    // do something with the row
});

Это будет проходить через предков, пока вы не доберетесь до <tr>.

Если вы хотите остаться с встроенными обработчиками, попробуйте что-то вроде этого:

<asp:DropDownList onchange="javascript:EnableControls(this)">

function EnableControls(elem) {
    var $tr = $(elem).closest('tr'); 
}
0 голосов
/ 27 августа 2010

Если вашим требованием является элемент управления внутри строки, который должен ссылаться на строку, разве вы не можете просто использовать что-то вроде этого:

$(".myControlClass").parents("tr")

для ссылки на строку?Контролируемый вами класс будет назначен ему, так что вы можете выбрать его таким образом.Я не знаю, как выглядит разметка, но это может быть хорошим началом.

0 голосов
/ 27 августа 2010

Вы всегда можете получить к нему доступ сверху вниз:

$("#<%= GridView1.ClientID %>").find("tr:eq(0)")

или использовать родителей для поиска:

//this reference to element
$(this).parents("tr:first")

HTH.

0 голосов
/ 27 августа 2010

Можете ли вы опубликовать пример кода для вида сетки, чтобы мы могли сравнить шаблоны?

Один из вариантов в верхней части моей головы будет дать каждому элементу класса, который использует встроенный блок кода для назначениянапример, уникальный класс на основе индекса.Вот пример:

<tr class='uniqueClass<%# Container.DataItemIndex %>'>

Таким образом, ваши элементы будут выглядеть как

<TR class='uniqueClass0' />
<TR class='uniqueClass1' />
<TR class='uniqueClass2' />

Здесь вы можете определить, что вам нужно в jquery, просто используя

var rowIndexRequired = 1;
var requireRow = $('.uniqueClass'+rowIndexRequired);

Если вы предоставите более подробную информацию, я могу помочь вам в дальнейшем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...