我正在使用JSON来检索select元素的值
我的colModel
是:
{ name: 'position', editable: true, edittype: "select", formatter:'select',
editoptions: {
value: function() {
var positions;
$.ajax({
url: "orthofixServices.asmx/GetPositionsList",
data: "{}",
async: false,
success: function(data) {
positions = data.d;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
return positions;
}
这是回复:
{
"d": {
"21": "CAP Pos 1",
"41": "CAP Pos 2",
"42": "CAP Pos 3"
}
}
从服务器发回以绑定网格的行是
{
"d": {
"page": 1,
"total": 1,
"records": 1,
"rows": [
{
"id": 9,
"name": "Julio",
"nameid": 0,
"title": "Doctor",
"npi": "123-123",
"license": "licabc",
"licstate": "NV",
"position": "41",
"us": false,
"hrate": 0,
"rrate": 0
}
]
}
}
“position”是提供select
元素的行中的字段。保存行后,网格上没有显示任何内容。为什么?我应该将选择的密钥保存为Int
还是String
。有关系吗?我尝试了两种方式,我永远不会在网格上显示select元素的任何内容。它应该显示:"CAP Pos 42"
答案 0 :(得分:1)
我建议您使用editoptions的dataUrl
和buildSelect
属性。此外,您还必须设置jqGrid的ajaxSelectOptions
选项的一些属性。
答案 1 :(得分:1)
简单可悲的事实是
formatter:'select', editoptions: { value: function() { ...
未由jqGrid实现。 $.unformat.select
的源代码根本不处理这种情况。
只需将数据转换为数组并通过value
将其传递给函数即可获得相同的效果。