2014-01-30 3 views
1

следующей процедуры является кодом нумерованных DataTable в моем JSP:JQuery Datatable пагинация только с результатами для на страницу

$(document).ready(function() { 
    $('#paginatedTable').dataTable({ 
     "bServerSide" :true, 
     "sAjaxSource" :"/JQueryPagination/Myservlet", 
     "bProcessing" :false, 
     "sPaginationType" :"full_numbers", 
     "bJQueryUI" :false, 
     "aoColumns" : [ { 
      "mDataProp" :"Name" 
     }, { 
      "mDataProp" :"Address" 
     }, { 
      "mDataProp" :"Town" 
     } ] 
    }); 
}); 

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

List<Company> companies = fetchCompleteCompanyDataFromDb(); 

Этот результирующий набор затем фильтруют, как показано ниже:

List<Company>filteredCompanyList = companies.subList(iDisplayStart,DisplayStart+iDisplayLength); 

filteredCompanyList список Я отображения в DataTable, который является 10 строк. Когда пользователь нажимает кнопку «Далее» для разбивки на страницы, запускается новый запрос, который будет снова заполнять полные данные компании, а затем будут отфильтрованы следующие 10 записей для второй страницы. Короче говоря, всякий раз, когда пользователь нажимает на следующую кнопку, запускается запрос на получение миллиона записей.

Мне нужно знать, есть ли способ, когда пользователь нажимает на следующую кнопку, будет отображен только следующий 10 записей.

ответ

1

Решение этого, скорее всего, заключается в реализации функции fetchCompleteCompanyDataFromDb(). В зависимости от того, как вы делаете это, вы можете реализовать новую функцию:

fetchPageFromDb(int pageNumber, int pageSize) 

Трудно предложить какую-либо конкретную реализацию, так как я понятия не имею, как fetchCompleteCompanyDataFromDb() работает так, я предполагаю, что ваша пагинацию должен быть реализован как часть кода, который формирует ваш запрос. Google о том, как реализовать подкачку в SQL и сообщить о том, что вы узнали.

2

Спасибо за ваши материалы .. Я смог исправить проблему. мое требование состояло в том, чтобы забрать только 10 записей за раз. Когда пользователь нажимает на следующую страницу, должен быть запущен новый запрос, который будет отображать следующие 10 строк для отображения. Таким образом, я могу реализовать разбиение на страницы с лучшей производительностью. Если обнаружено, что существуют две переменные, которые управляют разбиением на страницы. Это «iTotalRecords» & «iTotalDisplayRecords». Я запрошу таблицу, чтобы получить подсчет всех строк в таблице &, чтобы установить ее в «iTotalRecords». Затем я назначаю «iTotalDisplayRecords = iTotalRecords». Этот способ я ложно сообщаю плагину, что у меня есть весь список строк со мной. Но с помощью переменных «iDisplayStart» & «iDisplayLength» я выберу только необходимое количество строк из db &, чтобы ответить на ответ как json. Спасибо всем.

Смежные вопросы