Datatable не создает определенные строки - PullRequest
0 голосов
/ 20 сентября 2018

Есть обратный вызов, чтобы не создавать определенные строки?

Вот мой объект с данными:

 $('#table').DataTable({
    dom: "t<'col-sm-5'i><'col-sm-7'p>",
    autoWidth: false,
    serverSide: true,
    aaSorting: [[8, 'desc']],
    beforeCreatedRow: function(row, data) {
        if ( data.field == "OFF" ) {
            // DON'T CREATE THIS ROW
        }
    },
    rowId: 'id',
    lengthChange: false,
    iDisplayLength: 10,
    columns: [
        {data: "column1"},
        {data: "column2"},
        {data: "column3"},
        {data: "column4"},
        {data: "column5"},
        {data: "column6"}
    ]
});

Я использовал событие beforeCreatedRow только для примера.Я не уверен, что это событие существует.Это просто, чтобы показать вам, что мне нужно.

Итак, как вы можете видеть, мне не нужно создавать строку, если data.field значение ВЫКЛ.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Я бы не заполнил DOM бесполезными строками.Вместо того, чтобы скрывать их, просто пропустите их:

ajax: {
  url: 'some/url/',
  dataSrc: function(d) {
    var data = d.filter(function(row) {
      if (row.field != "OFF") return row
    })
    return data
  }
}

Вы можете удалить ненужные строки до до dataSrc, подключив xhr.dt event:

$('#example').on('xhr.dt', function(e, settings, json, xhr ) {
  json.data = json.data.filter(function(row) {
     if (row.field != 'OFF') return row
  })
})

см. демонстрацию здесь -> http://jsfiddle.net/g4h7950t/

Примечание. В приведенном выше примере используется { data: [..] } src.Было просто то, что у меня было под рукой.

0 голосов
/ 20 сентября 2018

Вы можете использовать rowCallback метод примерно так

var table = $('#table').DataTable({
   "rowCallback": function(row, data, index){
      if ( row.field == "OFF" ) {
         jQuery(row).hide();
      }
   }
});

Подробнее здесь

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