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

时间:2019-01-16 17:39:34

标签: javascript jquery asp.net-mvc jqgrid

我正在使用jqGrid JS v5.3.2。 我在服务器上有这样的键/值对列表

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

现在,我使用两列来显示/编辑此列表,如下所示: ...

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

...

我尝试过格式化程序:在第一列上方使用“选择”以消除第二列的需要(/具有两个jqgrid列,用于一个数据字段),但是它不显示选择的文本/值。我的猜测是jqgrid加载(远程)在编辑期间选择内容,因此没有任何显示。问题是如何使用colModel中的一列来显示和编辑以上列表中的数据字段? TIA

1 个答案:

答案 0 :(得分:0)

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

为了拥有一个字段,您应该首先获取键/值,然后再构建网格并将其作为格式选项中的值参数传递。

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

更新

如果使用自定义选项来预加载选择,则并不是那么困难。你应该做

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