Jqgrid edittype : select editoptions: dataUrl 没有被调用来填充数据

Posted

技术标签:

【中文标题】Jqgrid edittype : select editoptions: dataUrl 没有被调用来填充数据【英文标题】:Jqgrid edittype : select editoptions: dataUrl is not called to populate the data 【发布时间】:2021-12-25 17:14:42 【问题描述】:

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

$(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 来填充选择框。 jqgrid 使用 /info resturl 填充,它获取特定学生的部门名称。我希望 deptName 是类型选择框,它的值应该与使用 info rest url 获取的 deptName 相同

【问题讨论】:

如何判断dataUrl没有被调用?您可能指向了错误的网址。请查看调试控制台 (F12) 看看会发生什么。 @TonyTomov 使用调试工具我确认它不是通过网络选项卡确定的 使用哪个版本的jqGrid? 【参考方案1】:

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

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

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

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

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

【讨论】:

删除成功函数不会导致任何变化。仍然没有调用 url 我已经更新了答案 非常感谢。它的工作我已经接受它作为正确答案(y)

以上是关于Jqgrid edittype : select editoptions: dataUrl 没有被调用来填充数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用<SELECT> editoptions一列时,得到选择在jqGrid的价值

jqgrid 让隐藏的列在编辑状态时出现且可编辑

jqGrid 5.1.1 getRowData获取所有行总是少一条的问题

jqGrid怎么对进行过formatter操作的列进行查询

jqgrid动态填充select

使用带有 JqGrid 表单的 bootstrap select2