Вы можете перейти к ОБНОВЛЕНИЮ 2 напрямую
У меня есть огромная таблица, так что извлекайте смещение, ограничение не будет работать, так как оно принимает возраст.Итак, я подумываю перейти к методу подкачки по ключевому запросу, поэтому мой запрос будет отличаться для каждого клика, как указано ниже:
/*First*/
select top (1000) id, name from table_name order by id desc;
/*returns data from 56679923-56678924*/
/*Next*/
select top (1000) id,name from table_name where id < @previous_lowest_id order by id desc;
/*returns data from 56678923-56677924*/
/*Previous*/
SELECT * FROM
(select top (1000) id,name
from table_name
where id > @previous_highest_id
order by id asc
) as myAlias
ORDER BY id desc;
/*returns data from 56679923-56678924*/
/*Last*/
SELECT * FROM
(select top (1000) id,name
from table_name
order by id asc
) as myAlias
ORDER BY id desc;
Итак, мне нужно выполнять разные запросы в соответствии с нажатыми кнопками.Таким образом, возникает необходимость обнаружения другого клика.Если есть какой-либо встроенный метод, это здорово.В противном случае также приветствуются любые другие хаки для решения этой ситуации.
Кроме того, я могу видеть разные идентификаторы на каждом li, например,
<li class="paginate_button page-item next" id="DataTable_next">
<a href="#" aria-controls="coloradoDataTable" data-dt-idx="2" tabindex="0" class="page-link">Next</a>
</li>
Итак, я также попытался сделать следующеено безуспешно
$('#DataTable_last>a').click(function() { alert('zz'); });
Как я могу избавиться от этой проблемы.Я использую таблицу данных на стороне сервера, на которую можно ссылаться из https://datatables.net/
Обновление:
Теперь я могу обнаружить щелчок, однако я не могу отправить эти новые данные на сервер.В случае, если я установлю var page = 'first';
.Эта страница отправки отображается как «первая при каждом запросе».
var page;
var dataTable = $('#DataTable').DataTable( {
drawCallback: function(){
$('.paginate_button.first:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'first';
console.log(page);
});
$('.paginate_button.previous:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'previous';
console.log(page);
});
$('.paginate_button.next:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'next';
console.log(page);
});
$('.paginate_button.last:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'last';
console.log(page);
});
},
"ajax": {
"url":base_path +'/other_path',
"dataType":"json",
"type":"POST",
"data":{"_token":csrf_token,"page":page}
}
......
});
Эти console.log
показывают правильную страницу после каждого нажатия кнопки, но в данный момент значение не отправляется с другими параметрами.
Обновление: 2
В настоящее время мой код выглядит следующим образом.Это отправка мимо состояния страницы.Это означает, что если я сначала нажму next
, он не отправит страницу, но если я сейчас нажму previous
, на этот раз она отправит страницу как next
вместо страницы как previous
. Похоже, что сначала отправляется ajax-запрос, а позже обновляется значение страницы.Теперь мне просто нужно исправить это означает, что нужно сначала обновить значение страницы перед отправкой ajax.
var page;
var dataTable = $('#masterDataTable').on('preXhr.dt', function (e, settings, data) {
data.page = page;
}).DataTable( {
drawCallback: function(){
$('.paginate_button.first:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'first';
console.log(page);
});
$('.paginate_button.previous:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'previous';
console.log(page);
});
$('.paginate_button.next:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'next';
console.log(page);
});
$('.paginate_button.last:not(.disabled)', this.api().table().container())
.on('click', function(){
page = 'last';
console.log(page);
});
},
"processing": true,
"serverSide": true,
"searching": false,
"ajax": {
"url":base_path +'/other_path',
"dataType":"json",
"type":"POST",
"data":{"_token":csrf_token,"page":page}
},
"columns":[
{"data":"name"},
{"data":"address"},
{"data":"city"},
{"data":"action","searchable":false,"orderable":false}
],
"aLengthMenu": [50, 100, 250, 500],
"pageLength": 50,
"ordering": false,
"pagingType": "full"
} );