2013-06-26 60 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

相关问题