我有一个 ASP.NET 网站,其 C# 后端使用 Jqgrid。
我希望用户能够选择网格中的项目进行编辑。可编辑的字段之一将作为下拉选择列表呈现给用户,其中仅包含对该用户有效的选项。
例如,假设我有一个显示人员的网格。如果编辑“person1”,则用户可以从该项目的选择列表中选择“蓝色”或“红色”,但如果编辑“person2”,则用户只能从该项目的选择列表中选择“黄色”或“绿色”。选择列表。
我想根据选择的人/行动态填充选择列表。
我在特定字段上设置了 editoptions 和 dataurl,如下所示:
editoptions: { dataUrl: 'FetchData.aspx' }
然而,我以某种方式需要某种参数传递到 FetchData.aspx 页面,以便它可以对特定人员进行背景检查并为特定“人员”创建正确的列表。
我希望我可以传递 rowid 或 itemname 或如下所示的内容来标识所选的特定行/项目:
editoptions: { dataUrl: 'FetchData.aspx?selecteditem=' + Id }
如何传递参数以便为特定项目创建正确的项目列表?网上类似的问题无数,但我一直没能找到确凿的答案……
我通过添加以下 onSelectRow 函数解决了该问题(请注意,下面代码中的“Id”代表我想要作为参数传递的列的名称。它可以是网格中的任何列名称):
onSelectRow: function (id) {
var temp = $("#list").getRowData(id)['Id']
$("#list").setColProp('mySelectListColumnName', { editoptions: { dataUrl:'FetchData.aspx?selecteditem=' + temp });
}
以上有助于传递参数。然而,仅此还不够 - 它允许 FetchData.aspx 接收参数并相应地自定义 html 响应,但它只从 dataUrl 获取一次值 - 因此当我选择不同的行时它不会刷新。
为了解决这个问题,我还添加了以下语句:
jQuery.extend(jQuery.jgrid.edit, { recreateForm: true });
这确保每次单击编辑时都会重新创建编辑表单,这正是我想要的,因为每行的编辑表单都会略有不同。工作完美。希望这对那里的人有帮助 - 有很多选择,这是我见过的最简单的。它有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)