Подтвердить что ты не робот

Вставка атрибутов пользовательских данных в JQuery DataTables

Проблема:

  • Я использую JQuery DataTables v1.10 для проекта, связанного с работой.
  • Для проекта требуется определение Datatable и его создание с помощью проанализированных данных JSON, переданных в качестве значений таблицы
  • Как только созданный datatable был создан, каждая ячейка в каждом столбце должна иметь событие щелчка, которое открывает всплывающее окно и передает список имен в JSON, полученный от конечной точки. Конечная точка изменяется в зависимости от того, какая ячейка таблицы нажата.

  • Я думаю, что после создания экземпляра данных мне нужно сохранить какую-то уникальную информацию в атрибуте данных HTML5, определенном для каждого элемента ячейки таблицы. Я надеялся объявить пользовательский атрибут данных (например: data-endpoint = "endpoint id" ), но я не уверен, что это можно сделать, если строки таблицы динамически генерируются с помощью DataTables.

Поскольку я не знаю/не понимаю, какие у меня есть варианты, я хотел бы описать, что я в идеале хотел бы сделать:

  • Создайте копию данных и передайте им разобранные данные JSON.
  • В создании экземпляра таблицы задайте настраиваемый атрибут данных для каждого элемента ячейки таблицы.
  • Получите доступ к событию щелчка ячейки таблицы, передайте ей информацию, хранящуюся в правильном атрибуте данных, чтобы получить правильную конечную точку.
  • Создайте постин, который отобразит результаты, полученные от конечной точки.

Часть, которую я не понимаю, - это создание пользовательского атрибута данных для элемента ячейки таблицы. Возможно ли это, или мне нужно подумать о другом подходе. Любая помощь очень ценится!

4b9b3361

Ответ 1

Вы можете попробовать с обратным вызовом createdRow при создании экземпляра. Пример:

$table.dataTable({

    "destroy": true, // To replace existing data
    "data": jsonData,
    "columns": columns,

    // Per-row function to iterate cells
    "createdRow": function (row, data, rowIndex) {
        // Per-cell function to do whatever needed with cells
        $.each($('td', row), function (colIndex) {
            // For example, adding data-* attributes to the cell
            $(this).attr('data-foo', "bar");
        });
    }
});

Я думаю, это поможет вам сделать то, что вам нужно.

Ответ 2

Я должен был сделать что-то вроде этого. Я не уверен относительно остальных, но я использовал параметр columnDefs для установки атрибутов.

....
"destroy": true, // To replace existing data
"data": jsonData,
"columns": columns,
// Sets the attribute
"columnDefs": [{
    "targets":'_all',
    "createdCell": function(td){
        td.setAttribute('foo','bar');
    }
}]
...

Он по-прежнему использует параметр createdCell, но он имитирует то, что я нашел в их документации (https://datatables.net/reference/option/columns.createdCell).