jqgrid behalten-filter auf neu laden

Diese Frage wurde als eine Menge, so bitte vergib mir meine Fragen wieder ein.

Habe ich ein raster von einer url geladene.

Benutze ich loadonce: true

Benutze ich filtertoolbar:

$("#status").jqGrid('filterToolbar', { stringResult:true, searchOnEnter:false, autosearch: true, defaultSearch: "cn" });

Ich habe ein dropdown-such-Liste, aus der ich auswählen kann was ich Suche. Funktioniert Super.

Ich habe eine navbutton ich auf das initiieren reload alle 30 Sekunden. Funktioniert Super.

$("#status").jqGrid('navButtonAdd','#statuspager', { caption: '', buttonicon: 'ui-icon-play', onClickButton: function ()
{
stint = setInterval (function() {
      postfilt = $("#status").jqGrid('getGridParam', 'postData').filter;

      $("#status").jqGrid('setGridParam',{
             url: './ar_status.cgi?systemtype=' + systype,
             datatype: "json",
             postData: postfilt,
             search: true,
             loadtext: "Refreshing grid...",
             loadonce: true,
             loadui: "block"
      });
      $("#status").jqGrid().trigger("reloadGrid");
}, 30000);
},
title: 'Start Auto Refresh (every 30 sec.)'
});

Verwendung von google chrome kann ich sehen, die Filter, die angegeben wurden, wird an den server gesendet:

systemtype:production
_search:true
nd:1358887757603
rows:1000
page:1
sidx:system
sord:asc
totalrows:700
filters:{"groupOp":"AND","rules":[{"field":"system","op":"eq","data":"ATTDA02"}]}

Kann ich den filter wechseln zwischen reload und sehen Sie die neue, sogar mehrere Filter:

systemtype:production
_search:true
nd:1358887847592
rows:1000
page:1
sidx:system
sord:asc
totalrows:700
filters:{"groupOp":"AND","rules":[{"field":"system","op":"eq","data":"ATTDA02"},{"field":"dow","op":"cn","data":"MO"}]}

Ich bin mit multipleSearch: true initial load. Ich bin mir ziemlich sicher, dass das beibehalten Sie auf neu laden,

In der Startaufstellung, die filtertoolbar behält meine filter-Kriterien, sowohl text und wählt, aber wenn das Gitter lädt, wird der Filter ignoriert, und die gesamte Datenbestand wird diese in den raster.

Habe ich versucht, viele Beispiele hier gepostet. Ich habe versucht, indem [{current:true}], um die reloadGrid Anruf - kein Unterschied. Ich kann nicht scheinen, um behalten und anwenden der Filter auf reload.

Ich würde gerne den reload immer wieder den vollen Datensatz vom server (was gut), und erlauben, die aktuellen filter-Einstellungen, um zu Steuern, was angezeigt wird, nachdem der laden. Ich möchte nicht, verwenden Sie den post-Daten zum Aufbau einer neuen SQL-select-Anweisung - server side filtering, denn zu jeder Zeit kann der Benutzer wollen klicken Sie auf die pause-Taste, wählen Sie einen neuen filter ein und-Sicht etwas anderes aus der gesamten Datenmenge ohne weiteres laden.

$("#status").jqGrid('navButtonAdd','#statuspager', { caption: '', buttonicon: 'ui-icon-pause', onClickButton: function ()
{
   clearInterval(stint);
},
title: 'End Auto Refresh'
});

Wie kann das getan werden, ohne dass cookies verwendet werden, als ich sah, wie in einem post?

Könnte ich versuchen, mit jqGridExport 'Ing der postfilt var, und dann jqGridImport' Ing, aber hatte gehofft, für einen direkteren Ansatz. Ich bin mir auch nicht sicher, dass dies helfen würde, da ich bereits alles was ich brauche hier im Netz via postData.

Als seitliche Anmerkung, in meinem setGridParam oben, die loadtext-ich geben Sie nie angezeigt. Stattdessen die Standard - "Loading..." angezeigt. Alle anderen Parameter arbeiten.

Vielen Dank im Voraus,
Mike

Lösung. Die komplette loadComplete zu behalten, filtern, Sortieren, indizieren und zu Sortieren, um nach einem [json] reload vom server:

                    loadComplete: function() {
                            var $this = $(this);
                            postfilt = $this.jqGrid('getGridParam','postData').filters;
                            postsord = $this.jqGrid('getGridParam','postData').sord;
                            postsort = $this.jqGrid('getGridParam','postData').sidx;

                            if ($this.jqGrid("getGridParam", "datatype") === "json") {
                                    setTimeout(function () {
                                            $this.jqGrid("setGridParam", {
                                                    datatype: "local",
                                                    postData: {filters: postfilt, sord: postsord, sidx: postsort},
                                                    search: true
                                            });

                                            $this.trigger("reloadGrid");
                                    }, 50);
                            }
                    }

InformationsquelleAutor Mike | 2013-01-22

Schreibe einen Kommentar