重装的jqGrid异步使用Asp.Net MVC时和通过搜索/过滤器标准(Reloading JQG

2019-10-16 20:32发布

我现在用的是JQSuite的Trirand.Web.MVC DLL我的jqGrid集成到我的MVC 3应用程序。

我使用的jqGrid的HTML帮助,所以在我看来,我有以下几点:

@Html.Trirand().JQGrid(Model.MyGrid, "Grid")

我知道我可以用下面的代码加载上的按钮点击我的网格:

$("#Grid").trigger("reloadGrid");

这将刷新网格,要求我在位指示代码指定设立jqGrid的操作方法。

我有我使用的搜索/过滤,这些获得通过的行动法测得的页面上的其他控件。

我发现setGridParam方法,这似乎表明,你可以这样做:

$("#Grid").setGridParam({ someParam: 'blah' }).trigger("reloadGrid");

或这个:

$("#Grid").jqGrid('setGridParam', { postData: { someParam: 'somevalue'} }).trigger("reloadGrid");

但在我的操作方法我someParam参数没有得到填充以法

如何设置这些在jqGrid的,让他们通过行动的方法去重装时捡到?

更新 :我现在已经尝试了其他参数这种方法和它的工作!

所以现在我有:

$("#Grid").jqGrid('setGridParam', { postData: {
            someParam: 'somevalue', 
            paramTwo: ' some value',
            paramThree: 'some other value'
        } }).trigger("reloadGrid");

someParam不起作用,但paramTwo和ParamThree做工作。

奇怪!

有什么能停止工作的一个参数?

UPDATE2:使用奥列格的建议如下:

var myGrid = jQuery("#Grid").jqGrid({                
                postData: {
                    someParam: function () { return $("#txtBox1").val(); },
                    paramTwo: function () { return $("#txtBox2").val(); },
                    paramThree: function () { return $("#txtBox3").val(); }
                }
            });

        myGrid.trigger('reloadGrid'); 

...值没有打通发送。 我已经验证了的JQuery它在重装前返回正确的值。

Answer 1:

如果我理解你正确,你可以使用postData参数发送额外的参数给服务器。 最简单的将是使用postData具有方法(特性函数):

postData: {
    myCustomParam: function () { return $("#myInputFiled").val(); }
}

你可以找到更多的信息在这里 。 在这种情况下的电流值将在任何请求的动作被读取和值将被发送与名称附加参数myCustomParam

如果你需要从表单中的所有控件的值,可以使用$ .serializeArray功能,将所有结果一个附加参数。

你可以参考postData使用参数getGridParam和设置/更改新的附加属性。 由于getGridParam返回引用到它的内部参数,如果你要求你将不需要使用对象参数setGridParam

更新 :我不知道在哪里创建或之后,网格之前,你的代码被执行。 你可以试试下面的代码

<script type="text/javascript">
    $(function () {
        var $grid = $("#<%= JQGrid1.ClientID %>");
        if ($grid.length > 0 && $grid[0].grid !== undefined) {
            var postData = $grid.jqGrid("getGridParam", "postData");
            postData.myParam = function () {
                return "test data";
            };
        } else {
            $.extend($.jgrid.defaults, {
                postData: {
                    myParam: function () {
                        return "test data";
                    }
                }
            });
        }
    });
</script>

我希望它会在两种情况下工作。



Answer 2:

对了,非常感谢OLEG对他的帮助,因为它使我的答案!

问题是“SomeParam”在后的数据已指定,所以我不得不用这种形式来扩展现有的数据:

('#grid').jqGrid({                 
                serializeGridData: function(postData) { 
                  var newPostData = $.extend(postData, {
                      someParam: return $("#txtBox1").val(), 
                      paramTwo: return $("#txtBox1").val(),
                      paramThree: return $("#txtBox1").val(),
                  }); 

                  return $.param(newPostData); 
                } 
            }).trigger("reloadGrid");

这个帖子帮我出这一点,奥列格也张贴在那里了。



文章来源: Reloading JQGrid asynchronously when using Asp.Net MVC and passing search/filter criteria