Нажатие на строку получения DataTable в контекстном меню - PullRequest
0 голосов
/ 08 марта 2019

Я хотел бы добавить контекстное меню для каждой из моих строк DataTable.

Я хочу получить строку, по которой щелкнули, а затем каким-то образом идентифицировать ее (я полагаю, первое значение ячейки, которое содержитбудет работать первичный ключ), а затем отправит AJAX-запрос, содержащий PK и выбранную опцию.

Я выяснил, как получить строку, используя «tr» в качестве селектора, но как я могу получить 1-йзначение ячейки (которое содержит первичный ключ).Это распечатывает все ячейки:

$(function(){
    $.contextMenu({
        selector: 'td', 
        trigger: 'right',
        callback: function(key, options) {
            var  m = $(options.$trigger).text();
            window.console && console.log(m) || alert(m);
        },
        items: {
            "delete": {name: "Delete", icon: "delete"},
    }); 
});

Кроме того, это лучший способ сделать это?Я планирую иметь ~ 10 опций в контекстном меню, которые взаимодействуют со строками.Я использую Django в качестве бэкэнда.

1 Ответ

1 голос
/ 08 марта 2019

Всегда используйте API, если вы хотите взаимодействовать с DT. Если у вас есть экземпляр

var table = $('#example').DataTable( {..} )

затем извлекаем текущую строку, передавая options.$trigger, который содержит узел <tr>:

$.contextMenu({
  selector: 'tr', 
  trigger: 'right',
  callback: function(key, options) {
    var row = table.row(options.$trigger)
    switch (key) {
      case 'delete' :
        row.remove().draw()
        break;
      case ...
    } 
  },
  items: {
    'delete': { name: 'Delete', icon: 'delete' },
    ...
  }
}) 

но как я могу получить значение 1-й ячейки (которая содержит основной ключ).

row.data()[0]

демо -> http://jsfiddle.net/z2q5scgr/

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