jqGrid 的数据类型 select
what kind of data for jqGrid select
当我尝试编辑行时,我想在 jqGrid 中使用 select。
我这样设置 colModel:
{name:'scenic',index:'scenic',width:90,editable:true,editoptions:{size:"20",maxlength:"30"}, sortable: true,edittype:"select",editoptions:{dataUrl:"/admins/type"}
和我的 url return 数据如下:
[{"key":1,"value":"123"},{"key":2,"value":"456"},{"key":3, "value":"789"},{"key":4,"value":"00"}]
但问题是,当我返回这样的数据时,浏览器出现错误,所以我应该 return 什么样的数据,而且当我打开编辑时我可以获得行值 window.
错误是:
未捕获的错误:语法错误,无法识别的表达式:[{"key":1,"value":"123"},{"key":2,"value":"456"}, {"key":3,"value":"789"},{"key":4,"value":"00"}]
任何帮助将不胜感激.........:)
您的数据格式正确。您需要将 formatter
添加到您的 colModel。像这样:
{name:'scenic',index:'scenic',width:90, editable:true,editoptions:{size:"20",maxlength:"30"}, formatter: "select"}
试试看,希望对你有帮助。
jqGrid 期望 dataUrl
return HTML 片段与 <select><option>...</option>...</select>
。如果 dataUrl
returns 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" }
如果您不这样做,可能需要 buildSelect
中的 data
来使用 data = $.parseJSON(data.responseText);
.
转换对象
当我尝试编辑行时,我想在 jqGrid 中使用 select。
我这样设置 colModel:
{name:'scenic',index:'scenic',width:90,editable:true,editoptions:{size:"20",maxlength:"30"}, sortable: true,edittype:"select",editoptions:{dataUrl:"/admins/type"}
和我的 url return 数据如下:
[{"key":1,"value":"123"},{"key":2,"value":"456"},{"key":3, "value":"789"},{"key":4,"value":"00"}]
但问题是,当我返回这样的数据时,浏览器出现错误,所以我应该 return 什么样的数据,而且当我打开编辑时我可以获得行值 window. 错误是:
未捕获的错误:语法错误,无法识别的表达式:[{"key":1,"value":"123"},{"key":2,"value":"456"}, {"key":3,"value":"789"},{"key":4,"value":"00"}]
任何帮助将不胜感激.........:)
您的数据格式正确。您需要将 formatter
添加到您的 colModel。像这样:
{name:'scenic',index:'scenic',width:90, editable:true,editoptions:{size:"20",maxlength:"30"}, formatter: "select"}
试试看,希望对你有帮助。
jqGrid 期望 dataUrl
return HTML 片段与 <select><option>...</option>...</select>
。如果 dataUrl
returns 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" }
如果您不这样做,可能需要 buildSelect
中的 data
来使用 data = $.parseJSON(data.responseText);
.