datatables предотвращает выбор строк - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть объект datatables:

var datatablesobject = $('#live_table').DataTable( {
    "columns": [ {
        data: null,
        defaultContent: '',
        orderable: false,
        className: 'select-checkbox',
        targets:   0
        },
        { data: "status", orderable: false },
        { data: "serial" },
        { data: "version" }
    ],
    select: {
        style:    'multi'
    },
} );

Я хочу, чтобы строки с version < 1 были неактивными и не могли быть выбраны пользователями. Я знаю, что в datatables есть метод selector:, как описано в этой теме , но я не уверен, что это правильный путь к go:

 select: {
    style:    'os',   //default but you have to specify it, no idea why
    selector: 'tr:not(.no-select) td'
}

, что означало бы, что я просто добавьте идентификатор "no-select" к классу div или около того перед проверкой, если я правильно понял. Есть ли более простой способ? Кроме того, как я могу использовать это, чтобы покрасить линию, которую я только что отменил по-разному в зависимости от аргумента?

Я нашел пример с методом createRow , но как нуб jQuery я не уверен, как применить это к моему datatablesobject.

Какой здесь подход хорош :

var datatablesobject = $('#live_table').DataTable( {
    "columns": [ {
        data: null,
        defaultContent: '',
        orderable: false,
        className: 'select-checkbox',
        targets:   0
        },
        { data: "status", orderable: false },
        { data: "serial" },
        { data: "version" }
    ],

    "createdRow": function(row, data, dataIndex) { 
        if (data["version"] < 3) {
            $(row).css("color", "red"),
            // style multi for multiselect does not work
            select: {
                style:    'multi'        
            };
        } else {
            $(row).css("color", "grey");
        } },


    order: [[ 1, 'asc' ]],

1 Ответ

1 голос
/ 20 апреля 2020

Я не проверял это. Но, пожалуйста, попробуйте этот код. Вы можете добавить класс с помощью createRow. data [2] означает версию, data [1] означает серийный номер и т. д.

    var datatablesobject = $('#live_table').DataTable( {
    "columns": [ {
        data: null,
        defaultContent: '',
        orderable: false,
        className: 'select-checkbox',
        targets:   0
        },
        { data: "status", orderable: false },
        { data: "serial" },
        { data: "version" }
    ],
"createdRow": function( row, data, dataIndex ) {
             if ( data[2] < 1 ) {        
         $(row).addClass('red');

       }
    },
    select: {
        style:    'multi'
    },});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...