jqGrid选择什么样的数据

时间:2015-03-09 02:58:36

标签: jquery ajax jqgrid

当我尝试编辑行时,我想在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"}]

任何帮助都会受到赞赏.........:)

2 个答案:

答案 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);转换对象。