2016-08-09 11 views
0

Wenn ich eine Suche auf einer Seite größer als 1 und wenn die Anzahl der Elemente von der Suche gleich der Seitengröße sind, dann die Die Seite kehrt nicht zur vorherigen Seite zurück und gibt die falsche Seitennummer an.Slickgrid Paging - Problem für die Suche - Seitenzahl ist falsch, wenn pagesize = Suche Artikel zählen auf der zweiten Seite

Zum Beispiel wenn ich 5 Elemente habe und die Seitengröße auf 4 gesetzt ist. Wenn ich auf der zweiten Seite suche, die 4 Elemente zurückgibt, wird die Seite nicht auf Seite 1 zurückspringen und das Raster sagt Seite 2 von 1.

ich habe auch den gleichen Fehler, wenn ich example4 ändern - http://mleibman.github.io/SlickGrid/examples/example4-model.html

Ersetzen Sie diesen Code -

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); 
    } 

mit diesem -

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); 
    } 

diese Zeile hinzufügen -

dataView.setPagingOptions({pageSize: 4}); 

Gehe zu Seite 2 und die Suche nach Aufgabe 1. Es sollte 2 von 1.

+0

Danke winghei. Das hat funktioniert. – Tom

Antwort

0

Zeige Seite sagen, ich glaube, Ihre rowCount nicht aktualisiert wurde. Hast du das in deinem Skript hinzugefügt?

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

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

Aktualisierung: Fügen Sie diesen Code auf Ihrer slick.dataview.js hinzu. Finden Sie diese um Linie 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

Ich habe das hinzugefügt. Bitte sehen Sie meine bearbeitete Frage. // verdrahte Modellereignisse, um das Raster zu steuern dataView.onRowCountChanged.subscribe (Funktion (e, args)) { grid.updateRowCount(); //grid.invalidate(); // hinzugefügt grid.render(); }); dataView.onRowsChanged.subscribe (function (e, args) { grid.invalidateRows (args.rows); //grid.invalidate(); // hinzugefügt grid.render(); }); – Tom

+0

sieht so aus wie ein Fehler. Sie können dies beheben, indem Sie diesen Code in Ihrer Datei slick.dataview.js hinzufügen. Finden Sie diese Linie rund Linie 750 \t var paged; if (Seitengröße) { if (filteredItems.length 0) \t \t \t pagenum -; \t \t // ENDE paged = filteredItems.slice (Seitengröße * Seitenzahl, Seitengröße * Seitenzahl + Seitengröße); } sonst { paged = gefilterteItems; } – winghei

+0

behoben auf https://github.com/6pac/SlickGrid –