2016-08-09 6 views
0

Если я выполняю поиск на странице больше 1, и если количество элементов, возвращаемых из поиска, равно размеру страницы, тогда страница не вернется к предыдущей странице и не укажет неправильный номер страницы.Проблема подкачки Slickgrid для поиска - номер страницы неправильный, если страницыize = количество элементов поиска на второй странице

Например, если у меня есть 5 элементов, а размер страницы равен 4. Если я выполняю поиск на второй странице, которая возвращает 4 элемента, тогда страница не вернется на страницу 1, и сетка не будет отображаться. на 1

я получаю ту же ошибку, если я изменю Example4 - http://mleibman.github.io/SlickGrid/examples/example4-model.html

Заменить этот код -

for (var i = 0; i < 50000; i++) { 

    var d = (data[i] = {}); 
    d["id"] = "id_" + i; 
    d["num"] = i; 
    d["title"] = "Task " + i; 
    d["duration"] = "5 days"; 
    d["percentComplete"] = Math.round(Math.random() * 100); 
    d["start"] = "01/01/2009"; 
    d["finish"] = "01/05/2009"; 
    d["effortDriven"] = (i % 5 == 0); 
    } 

с этим -

var x; 

    for (var i = 0; i < 5; i++) { 
     var d = (data[i] = {}); 

     if (i == 0) 
      x = "1"; 
     if (i == 1) 
      x = "11"; 
     if (i == 2) 
      x = "111"; 
     if (i == 3) 
     x = "1111"; 
     if (i == 4) 
      x = "2"; 

    d["id"] = "id_" + i; 
    d["num"] = i; 
    d["title"] = "Task " + x; 
    d["duration"] = "5 days"; 
    d["percentComplete"] = Math.round(Math.random() * 100); 
    d["start"] = "01/01/2009"; 
    d["finish"] = "01/05/2009"; 
    d["effortDriven"] = (i % 5 == 0); 
    } 

Добавьте эту строку -

dataView.setPagingOptions({pageSize: 4}); 

Перейти на страницу 2 и поиск Задача 1. Следует сказать Показаны Страница 2 из 1.

+0

Thanks winghei. Это сработало. – Tom

ответ

0

Я думаю, что ваш ROWCOUNT не был обновлен. Вы добавили это в свой скрипт?

dataView.onRowCountChanged.subscribe(function (e, args) { 
    grid.updateRowCount(); 
    grid.render(); 
}); 

dataView.onRowsChanged.subscribe(function (e, args) { 
    grid.invalidateRows(args.rows); 
    grid.render(); 
}); 

Обновление: добавьте этот код на свой slick.dataview.js. Найти это вокруг линии 750

var paged; 
    if (pagesize) { 
    if (filteredItems.length < pagenum * pagesize) { 
     pagenum = Math.floor(filteredItems.length/pagesize); 
    } 
    //.. add this code 
    // START 
    if (filteredItems.length == pagenum * pagesize && pagenum > 0) 
     pagenum --; 
    // END 
    paged = filteredItems.slice(pagesize * pagenum, pagesize * pagenum + pagesize); 
    } else { 
    paged = filteredItems; 
    } 
+0

Я добавил это. См. Мой отредактированный вопрос. // связать события модели с сетью dataView.onRowCountChanged.subscribe (function (e, args) { grid.updateRowCount(); //grid.invalidate(); // добавлено grid.render(); }); dataView.onRowsChanged.subscribe (функция (е, арг) { grid.invalidateRows (args.rows); //grid.invalidate(); // добавлена ​​ grid.render();} ); – Tom

+0

выглядит как ошибка. вы можете исправить это, добавив этот код на свой slick.dataview.js. Найти эту линию круглую линию 750 \t var paged; if (pagesize) { if (filterItems.length 0) \t \t \t pagenum -; \t \t // END paged = filtItems.slice (pagesize * pagenum, pagesize * pagenum + pagesize); } else { paged = filtersItems; } – winghei

+0

исправлено на https://github.com/6pac/SlickGrid –