Как получить html attr для выбранной строки таблиц данных Jquery

#jquery #asp.net-mvc #datatables

#jquery #asp.net-mvc #таблицы данных

Вопрос:

Я использовал таблицы данных для отображения страницы списка с некоторым содержимым. Я следую этому примеру, чтобы выполнить пользовательское действие над выбранной строкой, аналогичное примеру удаления. Однако в моем случае я определил атрибут data-id, в котором я сохранил уникальный идентификатор для этой строки.

 <tr class="odd selected" data-id="349" role="row">
 <td class="sorting_1"> 1/04/2014 </td>
 <td> Grocery - Woolworths </td>
 <td> Grocery </td>
 <td> -58.33 </td>
</tr>
 

С помощью приведенного ниже кода я могу получить доступ к выбранной строке.

 $("#btnSplitTransaction").click(function () {
        var recordId = table.row('.selected');
 });
 

Однако, когда я пытаюсь получить доступ к идентификатору данных attr с помощью приведенного ниже кода, я не получаю правильного результата.

 $("#btnSplitTransaction").click(function () {
        var recordId = table.row('.selected').attr('id');
 });
 

Что я здесь делаю не так?

Комментарии:

1. attr('data-id') Не сработало?

Ответ №1:

Использовать data() вместо attr() get data-id

 $("#btnSplitTransaction").click(function () {
        var recordId = table.row('.selected').data('id');
});
 

Если вы хотите использовать attr, который не рекомендуется для атрибута данных, укажите полное имя атрибута вместо идентификатора data-id

 var recordId = table.row('.selected').attr('data-id');
 

Комментарии:

1. при использовании data (‘id’) я получаю следующую ошибку: Предупреждение о таблицах данных: идентификатор таблицы = tblTransaction — запрошен неизвестный параметр ‘2’ для строки 15. Для получения дополнительной информации об этой ошибке, пожалуйста, смотрите datatables.net/tn/4

Ответ №2:

Я смог решить эту проблему, автоматически выбрав элемент таблицы и не полагаясь на API Datatables для обработки этого. Ниже приведен код, который я использовал:

 var recordId = $('#tblTransaction tr.selected').eq(0).data('id');
 

Примечание: Здесь я делаю предположение, что можно выбрать только 1 строку. Если вы хотите разрешить выбор нескольких строк, вам нужно выполнить цикл по каждому выбору.