带有格式化程序选项的 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({...});
}
})
我正在使用 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({...});
}
})