Jqgrid edittype:select editoptions:不调用dataUrl来填充数据

Jqgrid edittype : select editoptions: dataUrl is not called to populate the data

我正在尝试使用 jqgrid 中的 select 框填充其中一列。下面是代码。

$(document).ready(function(){
    
    $("#grid").jqGrid({
        url: "./info",
        datatype: "json",
        mtype: "GET",
        ajaxSelectOptions:{
            type: "GET",
            dataType: "json",
            success: function (result) {
                console.log(result);
            }
        },
        colNames: ["DeptId", "DeptName", "StuId", "StuName", "StuDoj"],
        colModel: [
            { name: "deptId", hidden:true },
            { name:"deptName", width:90, editable:true, edittype:'select', formatter:'select', editoptions:{
                dataUrl:'./getDepts',
                buildSelect: function(res){
                    console.log(res);
                    var s='<select id="dept" name="dept">'
                    $.each(res,function(idx,obj){
                        $('#dept')
                          .append($('<option>', { value : obj.deptId })
                          .text(obj.deptName));
                    }); 
                    return s+"</select>";
                }
            }},
            { name: "studentId", hidden:true },
            { name: "studentName", width: 80,editable:true },
            { name: "studentDoj",width: 90,editable:true }
        ],
        pager: "#pager",
        rowNum: 5,
        rowList: [5, 10, 20],
        sortname: "empId",
        sortorder: "asc",
        sortable:true,
        viewrecords: true,
        gridview: true,
        caption: "MyGrid",
        jsonReader: {
            repeatitems: false,
            id: "empId",
            root: function (obj) { return obj; },
            page: function (obj) { return 1; },
            total: function (obj) { return 1; },
            records: function (obj) { return obj.length; }
        }
    }); 
    $("#grid").jqGrid('navGrid','#pager',{add:false,view:true,search:true});

})

在 colModel 'deptName' 的 editOptions 中,未调用 dataUrl 来填充 select 框。 jqgrid 使用 /info resturl 填充,它获取特定学生的 deptName。我希望 deptName 是 select 框类型,它的值应该与使用 info rest url

获取的 deptName 相同

它应该被调用,但是你的数据将被更新填充,因为你覆盖了 ajaxSelectOptions 中的成功函数。

为了得到响应,请评论成功功能或将其删除

$("#grid").jqGrid({
    url: "./info",
    datatype: "json",
    mtype: "GET",
    ajaxSelectOptions:{
        type: "GET",
        dataType: "json"
    },
    ....
});

更新: 稍作改动,您的代码就可以正常工作。这是一个link to your code

请注意,格式化程序没有选项 dataUrl。仅在编辑中可用。