0

我正在为 ASP.NET 网络表单使用 jqGrid 的商业版本 www.trirand.net。

一个这样的网格,每一行都有一个“查看”、“编辑”和“删除”按钮——但是,这些是每行限制的。

因此,这些单元格被赋予“真”或“假”的值,然后我使用自定义格式化程序使用来自cellObject[]对象的值为它们建立超链接(如果为假,则不执行任何操作)。

但是,我想将这些超链接更改为页面回发/asp.net 链接按钮 - 我很欣赏 jqGrid 是客户端,因此我无法在网格内添加服务器控件,并且我已经阅读了关于编写自己的__doPostBack函数的混合评论 -我尝试过的快速实验导致需要从__doPostBack.

我确实有一个链接按钮,在网格下方有一个命令名称和参数,我可以从中读取__doPostBackWithOptions,但是我不知道如何更改其中的任何值。link button实际上,如果我能够接受,更改command name然后command argument触发回发,它也会同样有效。这可能吗?

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

4

1 回答 1

0

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

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

然后我更改了第二个参数,__EVENTARGUMENT它触发了回发。

Link Button's click 事件中,我检查了:

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

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

由于网格是动态加载的,将每一行注册为可能的事件似乎适得其反......当我输入时,我想我可能有一个使用隐藏文本框的解决方案,让 jqGrid 更新它们的值,然后触发提交...看起来更干净!

于 2013-07-16T20:17:23.297 回答