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);.

转换对象