JQuery DataTables - ServerSide JSON - Как заполнить данные columnFilter, когда у вас есть несколько страниц - PullRequest
0 голосов
/ 31 августа 2018

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

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

Базовая фильтрация: https://datatables.net/examples/api/multi_filter_select.html Любой, кто ищет это, вероятно, попадет в этот пост: https://datatables.net/forums/discussion/48780/server-side-column-filtering-with-drop-down-get-all-options

Что дает вам преимущество, но не учитывает все виды деталей.

1 Ответ

0 голосов
/ 31 августа 2018

Хитрость заключается в том, чтобы получить данные JSON columnFilters и использовать их для заполнения раскрывающегося списка.

Итак, вы меняете:

column.data().unique().sort().each( function ( d, j ) {
    select.append( '<option value="'+d+'">'+d+'</option>)
} );

Кому:

var json = buDueTable.ajax.json();
var filterData = json.columnFilters.Data_DT_Filters;
if (filterData != null) 
{
    var columnIdx = column.index();
    var thisFilterdata = filterData[columnIdx];
    if (thisFilterdata != null)
    {
        for(var j = 0; j < thisFilterdata.length; j++) {
            select.append('<option value="' + thisFilterdata[j].filterItem + '">' + thisFilterdata[j].filterItem + '</option>')
        }
    }
}

В моем примере я использую класс IList с IList другого класса, переданного в процедуру для форматирования данных JSON.
В первом классе свойство называется Data_DT_Filters, а во втором классе свойство называется filterData, а отдельное свойство в нем - filterItem

.

Надеюсь, это поможет другим, пытающимся решить эту проблему.

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