Как я могу получить строку на основе значений столбцов, используя jQuery DataTables? - PullRequest
3 голосов
/ 22 июня 2011

Есть ли способ поиска строки в jQuery DataTables на основе значений столбца?Например, можно ли определить, какая строка содержит значение «foo» в столбце 1 и значение «bar» в столбце 2?Я хотел бы программно определить, какая строка содержит эти значения.Является ли лучшим решением просто сохранить отдельную структуру данных, которая связывает значения и индексы строк вместе?Я хочу удалить строку таблицы со столбцами, содержащими заданные значения.

Я использую DataTables 1.8.0 и jQuery 1.5.1.

Ответы [ 3 ]

6 голосов
/ 22 июня 2011

Я бы получил данные с помощью fnGetData, прошел бы по строкам и использовал бы $ .inArray:

function getRow(table_id, arg1, arg2) {
    var oTable = $('#' + table_id).dataTable(),
        data = oTable.fnGetData(),
        row, i, l = data.length;

    for ( i = 0; i < l; i++ ) {
        row = data[i];

        // columns to search are hard-coded, but you could easily pass this in as well
        if ( $.inArray(arg1, row) == 0 && $.inArray(arg2, row) == 1 ) {
            return $('#' + table_id + ' tr').eq(i);
        }
    }
    return false;
}

$row = getRow('table_id', 'foo', 'bar');

ПРИМЕЧАНИЕ. Не проверено

2 голосов
/ 22 июня 2011

Попробуйте использовать этот селектор:

$("tr td:nth-child(2):contains('value')").siblings(":contains('test')")

Посмотрите на эту скрипку:

http://jsfiddle.net/B4wMp/8/

DataTable просто отображается как простая старая HTML-таблица.

0 голосов
/ 14 мая 2018

У меня было похожее требование. Я также использую Datatable, но с версией> = 1.10. fnGetData () теперь отсутствует.

Вот адаптация ответа @glortho:

function getRow(tableId, propName, propValue) {
        var oTable = $('#' + tableId).DataTable(),
            data = oTable.rows().data(),
            row, i, l = data.length;

        for ( i = 0; i < l; i++ ) {
            row = data[i];


            if (row[propName] == propValue) {

                return $(`#${tableId}  tr`).eq(i+1);
            }
        }


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