2013-06-26 61 views
7

我有jqGrid之外的應該觸發網格重新加載的過濾器。這個條目給了我一些關於如何實現它的很好的見解,使用postData選項:How to filter the jqGrid data NOT using the built in search/filter box 不幸的是,代碼片段是片段,我無法弄清楚調用的整個順序應該是什麼。這是我目前的做法的壓縮視圖:jqGrid:如何調用'reloadGrid'從外部過濾器刷新網格

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

我應該如何構建代碼,以便提交按鈕的每次點擊都會引發電網重載?一旦我有了整理,我相信我可以添加posData部分,我的問題主要是調用的整個序列。我不確定哪些調用應該在ready()函數內部,以及如何正確調用'reloadGrid'。任何幫助不勝感激。

回答

6

這對我來說很有效:我在beforeRequest事件上設置了一個回調函數,在每次請求之前更新postData屬性。

注意,你會希望把所有的jqGrid初始化代碼的$(document).ready(function(){});函數裏,否則你的表格元素可能不會在DOM尚未

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

謝謝!我只需要按照您提供的調用順序進行操作,並且它可以很好地工作。事實上,我並不需要使用'beforeRequest',我只是將它添加到我的網格選項中:postData:{0} {0} {0} {0} ; }, \t \t}, – Pablo

+0

@Pablo啊......很好,我不知道你可以使用postData的函數!謝謝! – cfs

相關問題