来自jqGrid单元格项目的Fire PostBack

时间:2013-07-16 07:12:26

标签: asp.net jqgrid jqgrid-asp.net

我正在使用jqGrid的商业版本www.trirand.net,用于ASP.NET webforms。

一个这样的网格,每行都有一个“视图”,“编辑”和“删除”按钮 - 但是,这些按行限制。

因此,这些单元格的值为“True”或“False”然后我使用自定义格式化程序使用cellObject[]对象的值为它们构建超链接(如果为false,则执行没有)。

但是,我想将这些超链接更改为页面回发/ asp.net链接按钮 - 我感谢jqGrid是客户端,所以我无法在网格中添加服务器控件而且我已阅读有关编写您的内容的混合评论自己的__doPostBack功能 - 我尝试过的快速实验导致需要从__doPostBack调用验证。

我有一个链接按钮,带有命令名称&网格下方的参数,我可以从__doPostBackWithOptions读取,但我无法弄清楚如何更改此中的任何值。实际上,如果我能够link button,更改command namecommand argument然后触发回发,它也会同样有效。这可能吗?

另一个注意事项,我看过ClientScriptManager,但是我无法让它与jqGrid接口,看起来它仍然需要链接到现有的服务器控件?

1 个答案:

答案 0 :(得分:0)

好的,现在我让它在我的开发环境中工作,但感觉有点“hacky”......我基本上使用自定义格式化程序来劫持.NET Link Button的href属性:< / p>

javascript:WebForm_DoPostBackWithOptions(
    new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$ctl00$ctl00$ucCarePlanItem$lnkAddRecordBtn", "", true, "CarePlanSchedule", "", false, true))

然后我改变了第二个参数,__EVENTARGUMENT已经触发了回发。

Link Button的点击事件中,我检查了:

if (string.IsNullOrWhiteSpace(Request.Params.Get("__EVENTARGUMENT")))
{ ... }
else
{ ... };

最后,不得不禁用EventValidation - 这是我想避免的最后一点。

当网格动态加载时,将每一行注册为可能的事件似乎反效果......而且当我输入时,我想我可能有一个使用隐藏文本框的解决方案,让jqGrid更新它们的值然后触发提交...似乎更清洁!