我正在使用 JQSuite 的 Trirand.Web.MVC dll 将 JQGrid 集成到我的 MVC 3 应用程序中。
我正在使用 JQGrid 的 HTML 助手,所以在我的视图中我有以下内容:
@Html.Trirand().JQGrid(Model.MyGrid, "Grid")
我知道我可以使用以下代码在单击按钮时重新加载网格:
$("#Grid").trigger("reloadGrid");
这将重新加载网格,调用我在控制器代码中指定的 Action 方法来设置 JQGrid。
我在用于搜索/过滤的页面上有其他控件,这些控件可以很好地传递给操作方法。
我找到了 setGridParam 方法,这似乎表明您可以执行以下操作:
$("#Grid").setGridParam({ someParam: 'blah' }).trigger("reloadGrid");
或这个:
$("#Grid").jqGrid('setGridParam', { postData: { someParam: 'somevalue'} }).trigger("reloadGrid");
但是我的操作方法上的 someParam 参数没有填充任何一种方法
如何在 JQGrid 上设置这些,以便在重新加载时被 Action 方法拾取?
更新:我现在已经为另一个参数尝试了这种方法,它确实有效!
所以现在我有:
$("#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 在重新加载之前返回了正确的值。