2013-06-26 16 views
7

JqGrid'in dışında bir kılavuz yeniden yüklemesini tetikleyen filtrelerim var. Bu giriş bana postData seçeneğini kullanarak nasıl uygulanacağına dair iyi bir fikir verdi: How to filter the jqGrid data NOT using the built in search/filter box Maalesef kod parçacıkları parçalardır ve genel çağrı dizisinin ne olması gerektiğini anlayamıyorum. Gönder düğmesini her tıklama bir ızgara yeniden yüklenmesini tetikleyecek şekildejqGrid: Dış filtrelerden ızgarayı yenilemek için 'reloadGrid' nasıl çağırılır

<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> 

Nasıl kodu yapılandırmalıyım: İşte benim şimdiki yaklaşımın bir yoğunlaştırılmış manzara? Bir kez sıraya dizilmiş, eminim ben posData kısmını ekleyeceğim, problemim çoğunlukla çağrıların genel sırası ile. Hangi çağrıların ready() işlevinin içinde ve "reloadGrid" ifadesini düzgün olarak çağırmanız gerektiğinden emin değilim. Herhangi bir yardım büyük beğeni topluyor.

cevap

6

Bu benim için çalıştığı şey: Her istekte bulunulmadan önce postData özelliğini güncelleştiren beforeRequest özelliğinde bir geri arama ayarlıyorum. Eğer $(document).ready(function(){}); işlevi içerideki bütün jqGrid init kodu koymak isteyeceksiniz

Not aksi takdirde masa elemanı henüz DOM olmayabilir

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

teşekkür ederim! Sağladığınız çağrıların sırasını takip etmek zorunda kaldım ve mükemmel bir şekilde çalıştı. Aslında, 'beforeRequest' kullanma gereği duymadım, bunu grid seçeneklerime ekledim: postData: { \t \t brandId: function() {return jQuery ("# ​​brandsDropdown seçeneği: selected"). Val() ; } \t \t}, – Pablo

+0

@Pablo Ah ... güzel, PostData işlevlerini kullanabileceğinizi bilmiyordum! Teşekkürler! – cfs