2016-12-01 2 views
1

Ist es möglich, Grid-Sortierung/Filter/Auswahl auf grid.refresh() in einer intelligent optimierten Weise zu persistieren? Ich muss das Grid bei der Fenstergrößenanpassung aktualisieren, um es an eine neue Fenstergröße anzupassen. Ich denke, Refresh intern zerstört und neu erstellt Gitter, nicht für mögliche aktive Sortierung/Filter/Auswahl. Da Grid sehr viele Daten enthalten kann (virtuelles Scrolling), möchte ich unnötige db-Abfragen, Rendering und Sortierungen vermeiden. Ich denke, ich suche nach einer Aktualisierung, die bei vorhandenen Daten aktualisiert wird.shieldUI Grid Filter/Sortierung Persistenz bei Rasteraktualisierung

Antwort

0

Ich fand die Lösung in Refresh-Methode selbst. Es akzeptiert Optionsobjekte, bei denen aktuelle Datenquellenoptionen beibehalten werden können. Beispiel anhalten Art und/oder Filter:

var options = { 
    dataSource: $("#grid").swidget().dataSource 
} 
$("#grid").swidget().refresh(options); 

Bitte stehen Sie mich richtig, wenn ich hier falsch bin. Bei Auswahlen kann man ausgewählte Indizes abrufen und nach Aufruf von Refresh erneut auswählen.

EDIT: Filter und Sortierung werden beibehalten, aber die Filterzeile wird zurückgesetzt (alle aktiven Eingabewerte werden gelöscht). Könnte das ein Fehler sein? Wie behält man Werte in der Filterzeile?

1

Nähte wie sie es gerade implementiert haben - hier ist die example.

Vielleicht in der nächsten Version enthalten sein. Hier

ist der Code in dem Beispiel, das dies tut:

jQuery(function ($) { 
    $("#grid").shieldGrid({ 
     dataSource: { 
      data: gridData, 
      schema: { 
       fields: { 
        id: { type: Number }, 
        name: { type: String }, 
        company: { type: String }, 
        phone: { type: String }, 
        age: { type: Number }, 
        gender: { type: String } 
       } 
      }, 
      filter: { 
       // create the initial filter in that form 
       and: [ 
        { path: "name", filter: "con", value: "John" } 
       ] 
      } 
     }, 
     filtering: { 
      enabled: true 
     }, 
     paging: true, 
     columns: [ 
      { field: "id", width: "250px", title: "ID" }, 
      { field: "name", title: "Person Name", width: "250px" }, 
      { field: "company", title: "Company" }, 
      { field: "phone", title: "Phone", width: "250px" }, 
      { field: "age", title: "Age" } 
     ] 
    }); 
}); 
+0

bitte posten Sie Ihre Antwort, dass Beispiel. – Sachith