带有格式化程序选项的 jqgrid select 列表列不起作用

jqgrid select list column with formatter option not working

我正在使用 jqGrid JS v5.3.2。 我在服务器上有一个这样的 key/value 对列表

key|value
23|abc
12|bdc
100|fghe

现在,我使用两列 show/edit 这个列表,如下所示: ...

{
    label: 'thelist',
    name: 'key',
    hidden: true,
    editable: true,
    editrules: {
        edithidden: true
    },
    edittype: 'select',
    editoptions: {
        dataUrl: function () {
            return "getlisthtmlfromserverURL";
        }
    }
},
{
    label: 'thelist',
    name: 'value',
    width: 150
},

...

我已经在第一列上方尝试了 formatter: 'select' 以消除第二列的需要(/有两个 jqgrid 列服务一个数据字段),但它没有显示 text/value的 select。我的猜测是 jqgrid 在编辑期间加载(远程)select 内容,因此没有任何内容可显示。问题是如何使用 colModel 中的一列来显示和编辑上述列表的数据字段? TIA

我想你还没有读过 the docs here ,所以你应该知道 select 类型的格式化程序不支持 dataUrl 选项 - 它只支持字符串和对象值 - 即值应该在它们进入网格之前进行预定义。

为了拥有一个字段,您应该先获取 key/value,然后再构建网格并将其作为值参数传递给 formatoptions。

{
    name:'key', 
    formatter:'select', 
    formatoptions : {value:"23:abc;12:bdc;100:fghe"},
    edittype: 'select',
    editoptions: {
        value:"23:abc;12:bdc;100:fghe"
    }
} 

更新

在预加载 select 的自定义选项的情况下,这并不困难。你应该做

$.ajax({
    url : "url_to get_select(s)",
    success : functon(....) {
        // build your select string here 
        // call the jqGrid with that string.
        $(...).jqGrid({...});
    }
})