【问题标题】:jqGrid: How to invoke 'reloadGrid' to refresh the grid from external filtersjqGrid:如何调用“reloadGrid”从外部过滤器刷新网格
【发布时间】:2013-06-26 14:23:19
【问题描述】:

我在 jqGrid 之外有过滤器,应该触发网格重新加载。这篇文章让我很好地了解了如何使用 postData 选项来实现它:How to filter the jqGrid data NOT using the built in search/filter box 不幸的是,代码 sn-ps 是片段,我无法弄清楚调用的整体顺序应该是什么。以下是我当前方法的简明观点:

<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”。非常感谢任何帮助。

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    这对我有用:我在 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');
        }); 
    });
    

    【讨论】:

    • 谢谢!我只需要按照您提供的电话顺序进行操作,并且效果很好。事实上,我不需要使用'beforeRequest',我只是将它添加到我的网格选项中: postData: { brandId: function() { return jQuery("#brandsDropdown option:selected").val(); }, },
    • @Pablo 啊...很好,我不知道您可以为 postData 使用函数!谢谢!
    猜你喜欢
    • 2011-08-21
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多