2010-01-07 3 views
5

Gibt es eine Möglichkeit, die aktuell in einem jqGrid angezeigten Daten programmgesteuert zu filtern (in Javascript, nicht serverseitig)? Alle Suchbeispiele scheinen von der eigenen Suchoberfläche von jqGrid abhängig zu sein, was bei mir nicht funktioniert. Zum Beispiel möchte ich in der Lage sein, basierend auf Benutzeraktionen an einer anderen Stelle auf einer Seite zu filtern.Filter jqGrid programmgesteuert auf Client?

Ich stelle mir so etwas wie

jQuery("#grid_id").filter('CategoryID', selectedCategoryID); 

wo CategoryID eine Spalte in dem Gitter ist und selectedCategoryID enthält, beispielsweise eine durch den Benutzer in einem ausgewählten Element gewählten Wert.

Antwort

1

Sie könnten JSON als Daten übergeben und die Methode setGridParam verwenden, um die Daten neu zu laden!

Ich habe das noch nie ausprobiert und bin mir nicht sicher, wie Sie jqgrid dazu bringen könnten, Ihre Kundendaten zu verwenden, anstatt eine URL zu treffen!

Hatten Sie Glück?

5

Wenn Sie möchten, um Ihre Daten Vorfilter zuerst:

$('#myGrid').setGridParam({ data: filtereddataarray }).trigger("reloadGrid"); 

wo filtereddataarray nur Datensätze enthält, die Sie für diese Ansicht angezeigt werden soll

Wenn Sie Ihren Filter programmatisch konstruieren wollen (ich benutze diese Methode, meistens):

var filters = { "groupOp": "AND", "rules": [{ "field": "id", "op": "eq", "data": "9" }, { "field": "amount", "op": "ge", "data": "10" }, { "field": "name", "op": "cn", "data": "do i"}] }; 

//To filter: 
jqGridFilter(filters , $('#myGrid')); 

//To reset: 
jqGridFilter(null, $('#myGrid')); 

    function jqGridFilter(filtersparam, grid) { 
     grid.setGridParam({ 
      postData: { 
       filters: filtersparam 
      }, 
      search: true 
     }); 
     grid.trigger("reloadGrid"); 
    }