2012-03-26 5 views
1

Wie ich die Werte erfasse für die Felder in der Symbolleiste jqGrid Suche Gesuchten auf?jqGrid Filter ToolBar Integration mit Feder 3 MVC

Ich bin mit Spring MVC 3 für meine Backend Arbeit.

Derzeit meine Methode Signatur sieht aus wie

public @ResponseBody PageResponse getEmpList(
    @RequestParam("page") int pageNo, @RequestParam("rows") int rowLimit, 
    @RequestParam("sidx") String sortCol, @RequestParam("sord") String sortDir) 

Wie ich sie ändern die verschiedenen Suchparameter zu erfassen, dh der Bereich (e), die auf und die jeweiligen Suchzeichenketten durchsucht wurden

I bin mit jqGrid 4.3.1

Antwort

1

Ich gebe eine Antwort auf die Frage, die ich selbst gestellt habe.

Es gibt zwei Möglichkeiten, um die Filterparameter

Wenn Sie Ihre stringResult Option so wahr, wie in

jQuery("#grid_id").jqGrid('filterToolbar', {stringResult: true}); 

Die Filterparameter erhalten vorgelegt als JSON-String mit folgendem Format

zu erfassen
{"groupOp":"AND", // the group operation when you have multiple feilds to search on 
"rules":[ 
    {"field":"countrycode", // the field/columns being searched on 
     "op":"bw", // operator for searching, here bw mean beginning with 
     "data":"ind”}] // the search string for the above field 
} 

Dann könnten wir entscheiden, wie die Filterparameter aus dem obigen JSON String zu behandeln. Die empfohlene Methode ist die JSON-Bibliotheken zu verwenden, die Java-Objekte zu JSON Strings und umgekehrt auch umwandeln kann.

In einem solchen Fall die Methodensignatur dies zu handhaben sein wird als

@RequestMapping(value= "/cityData", method = RequestMethod.POST) 
    public @ResponseBody PageResponse getCityList(@RequestParam("page") int pageNo, 
                @RequestParam("rows") int rowLimit, 
               @RequestParam("sidx") String sortCol, 
               @RequestParam("sord") String sortDir, 
               @RequestParam("_search") boolean search, 

//captures the filter parameters as a json string          
    @RequestParam(value="filters",required=false) String filters) 

Der _search Parameter auf einen wahren Wert durch die Filterleiste ausgelöst wird, wenn ein Suchbegriff

Der andere Ansatz eingegeben diese Filter zu handhaben ist stringResult Option falsch wie in

jQuery("#grid_id").jqGrid('filterToolbar', {stringResult: false}); 

Durch die Einstellung dieser Option auf false der Spalte/Feld durchsucht einstellen auf und der Such-String als Name Wert Paare übergeben

Also in diesem Fall suchen wir nach countryCode und die Zeichenfolge, die wir suchen, ist ind.

So wird die Funktion Signatur

ändern
@RequestMapping(value= "/cityData", method = RequestMethod.POST) 
    public @ResponseBody PageResponse getCityList(@RequestParam("page") int pageNo, 
                @RequestParam("rows") int rowLimit, 
               @RequestParam("sidx") String sortCol, 
               @RequestParam("sord") String sortDir, 
               @RequestParam("_search") boolean search, 

    //capturing the search string for the country code column           @RequestParam(value="countryCode",required=false) String countryCode,) 

Hope this jemand hilft !!

0

ich empfehle Ihnen stringResult: true Möglichkeit filterToolbar zu verwenden:

jQuery("#grid_id").jqGrid('filterToolbar', {stringResult: true}); 

In dem Fall die Parameter der Anfrage an den Server werden die gleichen wie für Advanced Searching Dialog (die Suche mit multipleSearch: true Option).

Ich benutze Spring 3 MVC nicht selbst, aber ich nehme an, dass Sie den zusätzlichen Parameter @RequestParam(value="filters", required=false) String filters zur Liste der Parameter getEmpList hinzufügen müssen. Der Wert des Parameters ist JSON-String, die Sie zusätzlich (Parsing) deserialisieren sollten zu widersprechen. (siehe here für weitere Informationen)

+0

danke, dass Sie mich auf eine sehr nette Quelle hingewiesen haben. –

+0

@Anand: Gern geschehen! Ich entwickle mich nicht im Frühling selbst, aber ich hoffe, dass der Link Ihnen ein wenig helfen wird. – Oleg