Jquery jqgrid中是否有多个列,为下拉列表读取相同的源数据?

Jquery jqgrid中是否有多个列,为下拉列表读取相同的源数据?,jquery,ajax,jqgrid,Jquery,Ajax,Jqgrid,我有一个例子,jqGrid中有多个列,它们来自同一个列表以填充下拉列表 { name: "Manager", index: "Manager", width: 120, editable: true, edittype: "select", editoptions: { dataUrl: "/Person/GetSelectData" }, editrules: { required: false} }, { name: "Delegate", index: "Delegate",

我有一个例子,jqGrid中有多个列,它们来自同一个列表以填充下拉列表

   { name: "Manager", index: "Manager", width: 120, editable: true, edittype: "select", editoptions: { dataUrl: "/Person/GetSelectData" }, editrules: { required: false} },

  { name: "Delegate", index: "Delegate", width: 120, editable: true, edittype: "select", editoptions: { dataUrl: "/Person/GetSelectData" }, editrules: { required: false} },
我想看看是否有一种方法可以让tihs在不使用两个单独的ajax调用相同操作的情况下工作,只是为了获得相同的数据列表:

   dataUrl: "/Person/GetSelectData"

所以我可以调用它一次,并将项目列表链接到两列?这在jqGrid中是可能的吗?

任何您想要的实现都意味着对
“/Person/GetSelectData”
的数据进行某种缓存。我自己更喜欢的一种方式是使用
value
而不是
dataUrl
。选择值的列表可以包含在对填充网格的服务器的主响应中。在这种情况下,
url
中使用的操作可以返回其他数据。您可以使用定义为函数的
中返回的数据,也可以在处理之前在
中设置
。为了使我的建议更清楚,我用一个例子来解释它

第一种方法:使用
value
作为函数。可以在主JSON响应中包含通常在
“/Person/GetSelectData”
中返回的数据。例如,您可以使用
userdata
(或输入数据的任何其他扩展):

那就可以用

beforeProcessing: function (data) {
    var $self = $(this), userData = data.userdata, persons, selectOptions;
    if (userData && userData.Persons) {
        persons = userData.Persons;
        selectOptions = {
            searchoptions: { value: ":All;" + persons }, // for toolbar search
            stype: "select",
            editoptions: { value: persons },
            edittype: "select"
        };
        $self.jqGrid("setColProp", "Manager", selectOptions);
        $self.jqGrid("setColProp", "Delegate", selectOptions);
    }
}
顺便说一下,您甚至可以使用
格式化程序:“选择”
“管理器”和“委托”列。它允许使用ID而不是名称。比如说

"Persons": "3:Bill;1:Oleg;2:Leora"
人们应该在
格式设置程序中添加:“select”
selectOptions
。它允许在主数据(
JSON数据的一部分)内部使用ID
3
1
2
。使用
dataUrl
的标准方法不允许使用
格式化程序:“选择”


我建议您阅读,并在处理前了解有关动态修改网格的用法的更多信息。

我不知道为什么一些读者对您的问题投了反对票。我发现这个问题很有趣,我用am实现方式写了我的答案。
"Persons": "3:Bill;1:Oleg;2:Leora"