当我尝试编辑行时,我想在jqGrid中使用select。
我像这样设置colModel:
{name:'scenic',index:'scenic',width:90, editable:true,editoptions:{size:"20",maxlength:"30"}, sortable: true,edittype:"select",editoptions:{dataUrl:"/admins/type"}
我的网址返回如下数据:
[{"key":1,"value":"123"},{"key":2,"value":"456"},{"key":3,"value":"789"},{"key":4,"value":"00"}]
但问题是,当我像这样租用数据时我在浏览器中出错,所以我应该返回什么样的数据,并且当我打开编辑窗口时我也可以得到行值。 错误是:
Uncaught Error: Syntax error, unrecognized expression: [{"key":1,"value":"123"},{"key":2,"value":"456"},{"key":3,"value":"789"},{"key":4,"value":"00"}]
任何帮助都会受到赞赏.........:)
答案 0 :(得分:0)
您的数据格式正确无误。您需要将formatter
添加到colModel。像这样:
{name:'scenic',index:'scenic',width:90, editable:true,editoptions:{size:"20",maxlength:"30"}, formatter: "select"}
尝试,我希望能帮到你。
答案 1 :(得分:0)
jqGrid期望dataUrl
返回带有<select><option>...</option>...</select>
的HTML片段。如果dataUrl
返回JSON数据,则应使用buildSelect
将JSON数据转换为jqGrid所需的HTML片段。
代码中的下一个错误:您指定editoptions
属性两次,这是语法错误。
代码可能类似于
{name: "scenic", width: 90, sortable: true,
editable: true, edittype: "select"
editoptions: {
size: "20",
maxlength: "30",
dataUrl: "/admins/type",
buildSelect: function (data) {
var s = "<select>", i, l, item;
if (data != null && data.length) {
for (i = 0, l = data.length; i < l; i++) {
item = data[i];
s += '<option value="' + item.key + '">' +
item.value + '</option>';
}
}
return s + "</select>";
}
}
}
此外,您应使用ajaxSelectOptions
选项通知jQuery.ajax
有关预期数据的格式:
ajaxSelectOptions: { dataType: "json" }
如果您不这样做,可能需要data
buildSelect
来使用data = $.parseJSON(data.responseText);
转换对象。