Member 10028394 Ответов: 1

Показывать только связанные данные в таблице списка


я использую таблицу, которая использует автоматическую подкачку, когда я получаю данные из базы данных, она показывает всю запись из БД и показывает в таблице с помощью списка. Если запись 10 000, это займет время. Я хочу использовать такой трюк, чтобы не показывать все записи, а просто показывать 10 записей, а при нажатии на вторую страницу он получает 11-20 записей из базы данных.

Как это возможно, и эта техника лучше или нет

Могу ли я использовать процедуру хранения для этой цели

Что я уже пробовал:

function loadData() {
       var Year = $("#year").val();
       var Month = $("#month").val();
       var DataObjectForAjaxCall = { strYear: Year, strMonth: Month };
       if (Year != "" && Month != "") {
           $("#modalCenter").click();
           $.ajax({
               url: "@Url.Action("loadData", "Home")",
               method: "GET",
               data: DataObjectForAjaxCall,
               async: false,
               success: function (Result) {
                   $('.modal-body').html(Result);
               }
           });
           $("#hideLoader").click();
       } else {
           Alerts("Select Year and Month First");
       }

   }

1 Ответов

Рейтинг:
1

Andy Lanng

Хранимая процедура идеально подходит для этого.

Техника, которую вы ищете, называется "пейджинг".

Вам придется расширить свой DataObjectForAjaxCall объект должен включать номер страницы и, возможно, размер страницы (но вы можете предположить, что 10).

function loadData(pageNum) {

       if(pageNum == undefined)
          pageNum = 1;

       var Year = $("#year").val();
       var Month = $("#month").val();
       var DataObjectForAjaxCall = { strYear: Year, strMonth: Month, iPageNum: pageNum, iPageSize: 10 };
// ...


изменить loadData действие для использования этих новых параметров для вызова процедуры.


В этой процедуре вам понадобится индексный столбец:
SELECT *,
          ROW_NUMBER() OVER (ORDER BY @sort DESC) AS [Index]
      FROM myResults

Index пронумеруем строки от 1 до n. Используйте это в WHERE пункт:
WHERE [Index] BETWEEN (@pageNum-1)*@pageSize AND (@pageNum)*@pageSize


Есть масса примеров подкачки в интернете. вот простой пример:
sql-разбиение на страницы с помощью хранимой процедуры-переполнение стека[^]