2013-06-26 19 views
7

Mam filtry poza jqGrid, które powinny uruchomić przeładowanie siatki. Ten wpis dał mi pewien wgląd w to, jak go zaimplementować, używając opcji postData: How to filter the jqGrid data NOT using the built in search/filter box Niestety fragmenty kodu są fragmentami i nie mogę określić, jaka powinna być całkowita sekwencja wywołań. Oto skondensowane widok mojego obecnego podejścia:jqGrid: Jak wywołać "reloadGrid", aby odświeżyć siatkę z filtrów zewnętrznych

<script> 
    $(document).ready(function() { 
    $("#submit").click(function(e) { 
     e.preventDefault(); 
     myGrid.trigger('reloadGrid'); 
    }); 
    }); 

var url="${servicesUrl}/projects"; 

var myGrid = $("#projectList").jqGrid({ 
    url: url, 
    datatype: 'json', 
    mtype: 'GET', 
    // ... 
}); 
</script> 

Jak powinna wyglądać struktura kodu tak, że każde kliknięcie przycisku Prześlij spowoduje przeładowanie siatki? Kiedy już to załatwię, jestem pewien, że będę mógł dodać część posData, mój problem dotyczy głównie ogólnej sekwencji połączeń. Nie jestem pewien, które połączenia powinny być wewnątrz funkcji ready() i jak poprawnie wywoływać "reloadGrid". Każda pomoc bardzo doceniona.

Odpowiedz

6

Oto, co zadziałało: ustawiłem wywołanie zwrotne na zdarzeniu beforeRequest, które aktualizuje właściwość postData przed każdym żądaniem.

pamiętać, że chcesz umieścić wszystkie swoje jqGrid kod startowy wewnątrz funkcji $(document).ready(function(){});, inaczej elemencie tabeli nie może być w DOM jeszcze

var url="${servicesUrl}/projects"; 

$(document).ready(function() { 
    var $table = $("#projectList"); 

    $table.jqGrid({ 
     url: url, 
     datatype: 'json', 
     mtype: 'GET', 

     beforeRequest: function() { 
      var postData = $table.getGridParam('postData'); 
      //add parameters to postData here 
     } 
     // ... 
    }); 

    $("#submit").click(function(e) { 
     e.preventDefault(); 
     $table.trigger('reloadGrid'); 
    }); 
}); 
+1

dziękuję! Po prostu musiałem wykonać sekwencję połączeń, które podałeś, i działało idealnie. W rzeczywistości nie musiałem używać "beforeRequest", właśnie dodałem to do moich opcji siatki: postData: { \t \t brandId: function() {return jQuery ("# ​​brandsDropdown opcja: wybrana"). Val() ; }, \t }, – Pablo

+0

@Pablo Ah ... miło, nie wiedziałem, że możesz użyć funkcji dla postData! Dzięki! – cfs