【问题标题】:Jqgrid edittype : select editoptions: dataUrl is not called to populate the dataJqgrid edittype : select editoptions: dataUrl 没有被调用来填充数据
【发布时间】: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?

标签: javascript jquery jqgrid


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 删除成功函数不会导致任何变化。仍然没有调用 url
  • 我已经更新了答案
  • 非常感谢。它的工作我已经接受它作为正确答案(y)
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2011-11-15
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
相关资源
最近更新 更多