【发布时间】:2012-06-14 08:25:11
【问题描述】:
我正在使用 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");
但是我的 action 方法上的 someParam 参数没有被任一方法填充
如何在 JQGrid 上设置这些,以便在重新加载时被 Action 方法拾取?
更新: 我现在已经为另一个参数尝试了这种方法,它确实有效!
所以现在我有:
$("#Grid").jqGrid('setGridParam', { postData: {
someParam: 'somevalue',
paramTwo: ' some value',
paramThree: 'some other value'
} }).trigger("reloadGrid");
someParam 不起作用,但 paramTwo 和 ParamThree 起作用。
奇怪!
什么可以阻止一个参数工作?
更新 2: 使用 Oleg 的建议如下:
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 在重新加载之前返回了正确的值。
【问题讨论】:
-
代码
jQuery("#Grid").jqGrid({...});create jqGrid。 in 只能执行一次。如果你下次执行它什么都没有发生。所以“UPDATED2”中的代码应该什么都不做。
标签: asp.net-mvc-3 jqgrid jqgrid-asp.net