asp.net - 如何从jqgrid中的dataurl获取行id或参数以创建动态选择列表来编辑行

标签 asp.net jquery jqgrid

我有一个 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 });

这确保每次单击编辑时都会重新创建编辑表单,这正是我想要的,因为每行的编辑表单都会略有不同。工作完美。希望这对那里的人有帮助 - 有很多选择,这是我见过的最简单的。并且它有效。

关于asp.net - 如何从jqgrid中的dataurl获取行id或参数以创建动态选择列表来编辑行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523579/

相关文章:

javascript - 在 JavaScript(使用 jQuery)中,我想在文档就绪 block 内提示输入电子邮件

javascript - 容器关闭后如何停止播放YouTube视频

jquery - 如何增加jqgrid中footerrow的高度

javascript - 在表中查找特定行

jquery - jqGrid 过滤器不工作

jquery - jqgrid 省略号

.net - Databound后如何更改Gridview的标题文本?

asp.net - Aspx 文件中缺少 Visual Studio 展开/折叠按钮

c# - 用户凭据在 asp.net 网站中以明文形式发送

c# - asp.net C# 中的时差