Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите допилить поиск в datatble js (https://javascript.ru/forum/events/84845-pomogite-dopilit-poisk-v-datatble-js.html)

firsmember 14.01.2023 16:42

Помогите допилить поиск в datatble js
 
Всем доброго дня!
Помогите плиз - пытаюсь запилить поиск в datatable

Вот что делаю

$('#example').DataTable({
			initComplete: function () {
            // Apply the search
            this.api()
                .columns()
                .every(function () {
                    var that = this;
$('#tablefiltsubmit').on('click', function() {

var dataotcol = that.columns(0);
var datadocol = that.columns(1);
	var dataotval = document.querySelector('#dataot').value;
	var datadoval = document.querySelector('#datado').value;
	var typeval = document.querySelector('#typeoper').value;
	var cityval = document.querySelector('#citys').value;


                        if (dataotcol) {
							//console.log(that.column);
                            dataotcol.search(dataotval).draw();

 datadocol.search(datadoval).draw();
}

                    });
                });
}
});


Это работает но очень долго - я так понимаю он мне кучу раз перерисовывает таблицу сначала каждый столбец потом еще раз первый и второй чтобы поискать и если передаваемые значения будут пустые - это все так же очень долго происходит... Учитывая что в таблице несколько десятков тысяч записей - это печально!

Подскажите плиз - как сделать правильно ?

рони 14.01.2023 17:03

firsmember,
по клику надо сделать обход колонок, а не на оборот.

firsmember 14.01.2023 17:07

Если бы я понимал - что делаю не так не спрашивал бы)
Не понимаю что не то (((

рони 14.01.2023 17:11

firsmember,
могу только гадать, вам лучше почитать документацию, возможно в примерах есть, то что вы ищите.

рони 14.01.2023 17:29

firsmember,
условно должно быть как-то так ...
$('#example').DataTable({
                    initComplete: function() {
                        $('#tablefiltsubmit').on('click', function() {
                            var table = $('#example').DataTable();
                            var dataotval = document.querySelector('#dataot').value;
                            var datadoval = document.querySelector('#datado').value;
                            var typeval = document.querySelector('#typeoper').value;
                            var cityval = document.querySelector('#citys').value;
                            var ar = [dataotval, datadoval, typeval, cityval];
                            for (let i = 0; i < ar.length; i++) {
                                if (ar[i]) table = table.column(i).search(ar[i])
                            }
                            table.draw();
                        });
                    }
                })

firsmember 14.01.2023 17:45

Верно - есть такой пример https://datatables.net/examples/api/regex.html
Но я не понимаю как сделать отправку всех полей в соответствующие колонки при клике по кнопке - применить - а не при изменении поля

рони 14.01.2023 17:52

firsmember,
смотрите код выше, немного исправил.

firsmember 14.01.2023 17:53

Извините - но не понимаю - где у вас указывается по какой колонке - какое из полей ищет ?
потому что работает отлично и быстро - но вот некоторые значения не в те колонки прописались

firsmember 14.01.2023 17:57

Может давайте поисковым полям атрибут назначим с номером колонки тогда от 0 и т.д. ? Подскажите?

рони 14.01.2023 18:00

Цитата:

Сообщение от firsmember
где у вас указывается по какой колонке - какое из полей ищет ?

строка 9, либо измените порядок, либо добавьте колонки, в которых не надо искать.

рони 14.01.2023 18:06

firsmember,
если совсем никак напишите здесь номера колонки для dataotval, datadoval, typeval, cityval

firsmember 14.01.2023 18:54

Разобрался - спасибо большое !
Понял - как работает и в чем ошибка была! Премного вам благодарен Рони!

рони 14.01.2023 19:09

firsmember,
ура!!!)))


Часовой пояс GMT +3, время: 10:01.