2010-10-05 14 views
7

Utilizzo di jqGrid multiple searching come è possibile cancellare "programmaticamente" le opzioni di ricerca?jqGrid - come reimpostare le opzioni di ricerca?

Il "chiaro" dovrebbe garantire l'assenza di filters vengono inviati al server e che la casella di ricerca GUI non contiene alcun criterio di ricerca ..

Attualmente stiamo chiamando trigger("reloadGrid"). Vorremmo chiamare un metodo di tipo clearSearchCrieria() prima di reloadGrid in modo che nessun filters venga passato al server o visualizzato nella casella di ricerca della GUI ..

??

risposta

3

cliccare sul tasto "reset" try:

$(".ui-reset").click(); 
+0

Proverà che - il mio post potrebbe essere un po 'fuorviante .. Quello che sto cercando di fare è chiaro le opzioni di ricerca e chiama 'trigger (" reloadGrid ")'. Il tuo suggerimento potrebbe funzionare ... anche se preferirei non chiamare letteralmente 'click' .. vorremmo chiamare un metodo' clearSearchOptions() 'quindi chiamare' trigger ("reloadGrid") ' –

5

Per ripristinare filtri è possibile modificare il parametro postData di jqGrid direttamente. È possibile accedervi con $("#list").jqGrid('getGridParam','postData') o $("#list")[0].p.postData. Se un filtro è impostato, le proprietà del postData assomigliano seguente:

_search  true   Boolean 
nd   1286296925096 Number 
page   1    Number 
rows   10    Number 
searchField "id"   String 
searchOper "lt"   String 
searchString "5"   String 
sidx   "id"   String 
sord   "desc"   String 

Per ripristinare le proprietà che si possono fare seguendo

var postdata = $("#list").jqGrid('getGridParam','postData'); 
postdata._search = false; 
postdata.searchField = ""; 
postdata.searchOper = ""; 
postdata.searchString = ""; 

Se si utilizza Advanced Searching invece di Single Searching si dovrebbe cancellare filters proprietà invece di searchField, searchOper e searchString.

Alla fine è possibile chiamare $("#list").trigger("reloadGrid",[{page:1}]); per ricaricare la griglia contiene inizia con il numero di pagina 1.

+0

Grazie Oleg - ma questo non sembra ripristinare l'interfaccia utente di ricerca della griglia. Questo è il criterio di ricerca precedente ancora visualizzato quando si fa clic sul pulsante di ricerca nella barra di navigazione. Mi piacerebbe chiarirli. –

+1

@Marcus: hai chiesto come reimpostare le opzioni di ricerca di jqGrid. Così ho capito che hai aperto le opzioni di dialogo della finestra di dialogo Cerca e poi chiudi la finestra di dialogo di ricerca. Le opzioni di ricerca rimangono salvate in jqGrid. Così ho risposto a come resettare le opzioni. Cosa vuoi dire allora? A proposito, usi l'opzione 'recreateFilter: true'? – Oleg

+0

Non usiamo l'opzione 'recreateFilter'. Se impostiamo manualmente i dati postati, i dati di ricerca rimangono salvati nella griglia - come rimuovi la ricerca dalla griglia in modo che la GUI non mostri alcuna opzione di ricerca selezionata? –

15

È possibile utilizzare il seguente metodo:

function clearSearchOptions(){ 
    $("#list").jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid"); 
} 

Ma, come Oleg ha sottolineato, si avrà per utilizzare l'opzione recreateFilter:true nella definizione jqgrid se si desidera che anche la casella di ricerca jqgrid sia deselezionata.

+0

grazie, ha funzionato per me: non ero in grado di impostare i dati in Subgrid, quindi ho scritto $ ("# Subgrid").jqGrid ('setGridParam', {search: false, postData: {"filters": ""}}); $ ("# Subgrid"). SetGridParam ({'data': SubgridData}). Trigger ('reloadGrid', [{pagina: 1}]); –

+0

@Jimbo Non penso che reloadGrid sia obbligatorio, per me è stato eseguito senza l'attivazione di reloadGrid. Comunque grazie per i suggerimenti. –

2

L'unico modo ho potuto farlo bene - e sono sicuro che la sua non è la strada giusta è la seguente:

$("#grid").jqGrid('setGridParam', { postData: { filters: null} }); 
$("#gs_ColName1").val(""); 
$("#gs_ColName2").val(""); 

dove ColNameX sono i nomi delle colonne

+0

ideed! Grazie! Ho combinato le tue ultime due righe, per pulire le caselle di ricerca e la prima, ma in aggiunta ho attivato la ricarica! – Paschalis

0
$("#search").filterGrid("#list", { 
     gridModel: false, 
     enableSearch: true, 
     filterbutton: 'search_button', 
     enableClear:true, 
     filterModel: [{ 
      label: 'First Name', 
      name: 'search', 
      stype: 'text' 
     }); 

scrittura enableClear:true nel vostro filterGrid

0

uso solo

$ ("# td ri fresh_navGrid ") fare clic su().;

2

Sarà ripristinare tutte le opzioni di ricerca

$('input[id*="gs_"]').val(""); 
+1

Facendo una semplice modifica a '$ (': input [id * =" gs _ "]'). Val (" ");' troverà tutti gli elementi del modulo, che include le caselle di selezione. – Joseph

0

ho aggiunto pulsante di aggiornamento esterno per risolvere questo.

jgrid.jsp

<sj:submit id="grid_refreshbutton" value=" Refresh" button="true"/> 

jgrid.js

$(document).ready(function(){ 
jQuery("#grid_refreshbutton").click(function(){ 
    var postData = $("#gridtable").jqGrid('getGridParam','postData'); 
    $("#gridtable").jqGrid('setGridParam',{search:false});  
     $.extend(postData, { filters: "" }); 

     for (k in postData) { 
      if (k == "_search") 
       { postData._search = false;} 
      else if ($.inArray(k, ["nd", "sidx", "rows", "sord", "page", "filters"]) < 0) { 
        delete postData[k]; 
        ("#gs_" + $.jgrid.jqID(k), $("#gridtable").get(0).grid.hDiv).val(""); 
      } 
     } 
       $("#gridtable").trigger("reloadGrid", [{ page: 1}]);   

});

Grazie/Saluti, Khine lae

0
$("#resetFilterOptions").click(function(){ 
     $('input[id*="gs_"]').val(""); 
     $('select[id*="gs_"]').val("ALL"); 
     $("#list").jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid"); 
     }); 

Questo funziona riposo Opzioni di ricerca e ricaricare il jqGrid

Problemi correlati