2012-04-03 12 views
2

Wir verwenden die erweiterte Suche in der neuesten Version von jqGrid. Unser Suchdialog ist so konfiguriert, dass er immer auf der Seite über dem Raster sichtbar ist. Die Struktur unserer Datenlisten ist dynamisch. Wenn wir also eine Liste anzeigen, führen wir zuerst einen Ajax-Aufruf durch, um die Liste der Spalten für das Gitter zu erhalten. Wir konstruieren dann das Datenmodell für das Gitter und machen eine Anfrage für die Daten.Datumsbereiche in jqGrid-Suchen

Derzeit geben wir in der Anforderung zum Abrufen der Spalten den Datentyp der Spalte zurück. Wenn die Daten ein Datum sind, zeigen wir eine Datumsauswahl im Suchformular an. Aber einige unserer Kunden HATE müssen < verwenden => = für Zeiträume. Sie möchten in der Lage sein, eine Datumsspalte auszuwählen und dann ein Start- und Enddatum mithilfe von zwei Datum-zu-Seite-Datumswählern festzulegen. Ich habe sie jetzt schon eine Weile verdrängt, weil sie die Möglichkeit haben, nach Datumsbereichen zu suchen, aber das Jammern hört nicht auf. (Es gibt mehr Klicks, um den zweiten Filter mit dem Enddatum hinzuzufügen)

Gibt es eine Möglichkeit, jqGrid zu ändern, um mir eine Datumsbereichskontrolle zu geben, wenn ich eine Suche nach einer Datumsspalte konfiguriere? Ich möchte wirklich keine externe Suchdialog-UI einrichten müssen, um mit diesen Beschwerden fertig zu werden, aber das Produktmanagement bemüht sich sehr, "normale" Zeiträume für die Grids zu bekommen.

enter image description here

Antwort

0

Soweit ich weiß, gibt es keine Möglichkeit, dies zu tun, aber es selbst zu schreiben.

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_searching

Filter jqGrid Data by Date Range?

+0

Ich frage mich, ob es eine Art von Callback gibt, die ich einhaken könnte, wenn eine Datumsspalte ausgewählt ist. Dann könnte ich automatisch den zweiten Filter für sie einrichten. Außerdem, wenn ich irgendwie zusätzliche "Operationen" für die Suche hinzufügen könnte, so dass ich die Wörter "Von" und "Bis" in der Benutzeroberfläche verwenden könnte, und dann einfach diese Wörter auf der Serverseite übersetzen, um meine Abfrage einzurichten. –

+0

Es gibt kein Ereignis, das ausgelöst wird, wenn Sie eine Spalte für die Suche auswählen, oder ein Ereignis, das ausgelöst wird, wenn Sie eine Zeile für die Suche hinzufügen. Die einzigen verfügbaren Ereignisse sind hier beschrieben: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:singe_searching#options – Jaco

1

Sie können Ihre eigenen Suchdialog erstellen. Sehen Sie dieses question, das ich vor einigen Tagen fragte.

mit setGridParam, um Ihre postData Array zu ändern und zusätzliche Werte in das filters JSON-Objekt, die auf Ihre Server-Seite übertragen werden, wo Sie es sezieren können. In Ihrem Fall können Sie den Datenbereich Start und End innerhalb des filter Elements der postData übergeben. nachladen dann jqGrid wie dies

var $grid = $("#list'); 
    //$grid.setGridParam({datatype:'json', page:1}).trigger('reloadGrid'); 
    var post_data = {searchField:'',searchString:'', searchOper:'', 
      filters:'{"groupOp":"OR","rules":['+ 
        '{"field":"Date","op":"ge","data":"2012-04-23"},'+ 
          '{"field":"Date","op":"lt","data":"2012-04-25"}' + 
          ']}' 
    }; 
    $grid.setGridParam({postData:post_data}).trigger('reloadGrid'); 

Die oben wird die postData Array mit der neuen Konfiguration speichern und die reloadGrid sendet an den Server mit den neuen postData Array eine Anfrage ein. Dies wird auch das Paging erhalten; Um jedoch die alte Ansicht Ihres Rasters (ohne Suchbegriffe) zu erhalten, müssen Sie die Schaltfläche reset auch separat implementieren und danach reloadGrid auslösen, damit dies wirksam wird.

Nicht sicher, ob Sie Ihr Problem inzwischen gelöst haben; Allerdings stelle ich diese Lösung hier für jeden aus der Zukunft, der das gleiche Problem hat.

Verwandte Themen