2010-10-05 18 views
7

Jak programowo "wyczyścić" opcje wyszukiwania za pomocą jqGrid multiple searching?jqGrid - jak zresetować opcje wyszukiwania?

„Wyczyść” należy zapewnić nie filters są wysyłane do serwera i że pole wyszukiwania GUI nie zawierają żadnych kryteriów ..

Obecnie nazywając trigger("reloadGrid"). Przed reloadGrid chcielibyśmy wywołać metodę typu clearSearchCrieria(), aby nie zostały przekazane do serwera lub wyświetlone w polu wyszukiwania GUI.

??

Odpowiedz

3

kliknąć przycisk "Reset" try:

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

Postara że - mój post może być nieco mylące .. Co staram się zrobić jest jasne opcje wyszukiwania i wywołaj 'trigger (" reloadGrid ")'. Twoja sugestia może działać. Chociaż wolałaby nie dosłownie nazywać "kliknięciem". Chciałaby wywołać metodę 'clearSearchOptions()', a następnie wywołać 'trigger (" reloadGrid ")' –

5

Aby zresetować filtry można zmodyfikować parametr jqGrid postData bezpośrednio. Możesz uzyskać do niego dostęp pod numerem $("#list").jqGrid('getGridParam','postData') lub $("#list")[0].p.postData. Jeśli filtr jest ustawiony, właściwości postData wyglądać jak następuje:

_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 

Aby zresetować właściwości można wykonać następujące

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

Jeśli używasz Advanced Searching zamiast Single Searching należy wyczyścić filters własność zamiast z searchField, searchOper i searchString.

Na koniec można nazwać $("#list").trigger("reloadGrid",[{page:1}]); przeładować siatka zawierać począwszy od numeru strony 1.

+0

Dzięki Oleg - ale nie wydaje się, że zresetuj interfejs wyszukiwania siatki. To jest wcześniejsze kryteria wyszukiwania, które pojawiają się po kliknięciu przycisku wyszukiwania na pasku nawigacji. Chciałbym to usunąć. –

+1

@ Marcus: Pytałeś, jak resetować opcje wyszukiwania jqGrid. Zrozumiałem, że otworzyłeś opcje okna dialogowego wyszukiwania, a następnie zamknij okno wyszukiwania. Opcje wyszukiwania pozostają zapisane w jqGrid. Odpowiedziałem więc, jak zresetować opcje. Co masz na myśli? A przy okazji, czy używasz opcji 'recreateFilter: true'? – Oleg

+0

Nie używamy opcji 'recreateFilter'. Jeśli ręcznie ustawimy postdata, dane wyszukiwania pozostają zapisane w siatce - jak usunąć wyszukiwanie z siatki, aby gui nie wyświetlało żadnych wybranych opcji wyszukiwania? –

15

Można użyć następującej metody:

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

Ale jak Oleg zauważył, trzeba będzie aby użyć opcji recreateFilter:true w definicji jqgrid, jeśli chcesz również wyczyścić pole wyszukiwania jqgrid.

+0

dziękuję, zadziałało dla mnie: Nie udało mi się ustawić danych w podkatalogu, więc napisałem $ ("# Subgrid").jqGrid ('setGridParam', {search: false, postData: {"filters": ""}}); $ ("# Subgrid") .setGridParam ({'data': SubgridData}). Trigger ('reloadGrid', [{page: 1}]); –

+0

@Jimbo Nie sądzę, aby reloadGrid był obowiązkowy, dla mnie działało bez wyzwalania reloadGrid. W każdym razie Dzięki za wskazówki. –

2

Jedynym sposobem mogę zrobić to dobrze - i jestem pewien, że to nie jest właściwa droga jest następujący:

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

gdzie ColNameX są imiona swoich kolumnach

+0

ideed! Dziękuję Ci! Połączyłem twoje ostatnie dwie linie, aby wyczyścić pola wyszukiwania i pierwsze, ale dodatkowo uruchomiłem przeładowanie! – Paschalis

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

Write enableClear:true w filterGrid

0

użytku

$ ("# ponownego td fresh_navGrid "). click();

2

To spowoduje zresetowanie wszystkich opcji wyszukiwania

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

Wprowadzanie prostej zmiany w '$ (': input [id * =" gs _ "]'). Val (" ");" znajdzie wszystkie elementy formularza, które obejmują pola wyboru. – Joseph

0

I dodał zewnętrzny przycisk odświeżania, aby rozwiązać ten problem.

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}]);   

});

Dzięki/Pozdrawiam, Khine Lae

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

Ten działa Rest opcje wyszukiwania i odświeżyć jqGrid

Powiązane problemy