jqGrid editotype:' select,formatter:' select'不工作

时间:2012-03-09 17:35:16

标签: jquery jqgrid

我正在使用JSON来检索select元素的值 我的colModel是:

{ name: 'position', editable: true, edittype: "select", formatter:'select',
    editoptions: {
        value: function() {
            var positions;
            $.ajax({
                url: "orthofixServices.asmx/GetPositionsList",
                data: "{}",
                async: false,
                success: function(data) {
                    positions = data.d;
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
             });
            return positions;
        }

这是回复:

{
    "d": {
        "21": "CAP Pos 1",
        "41": "CAP Pos 2",
        "42": "CAP Pos 3"
    }
}

从服务器发回以绑定网格的行是

{
    "d": {
        "page": 1,
        "total": 1,
        "records": 1,
        "rows": [
            {
                "id": 9,
                "name": "Julio",
                "nameid": 0,
                "title": "Doctor",
                "npi": "123-123",
                "license": "licabc",
                "licstate": "NV",
                "position": "41",
                "us": false,
                "hrate": 0,
                "rrate": 0
            }
        ]
    }
}

“position”是提供select元素的行中的字段。保存行后,网格上没有显示任何内容。为什么?我应该将选择的密钥保存为Int还是String。有关系吗?我尝试了两种方式,我永远不会在网格上显示select元素的任何内容。它应该显示:"CAP Pos 42"

2 个答案:

答案 0 :(得分:1)

我建议您使用editoptionsdataUrlbuildSelect属性。此外,您还必须设置jqGrid的ajaxSelectOptions选项的一些属性。

有关用法的示例,请参阅hereherehere

答案 1 :(得分:1)

简单可悲的事实是

formatter:'select',  editoptions: { value: function() { ...

未由jqGrid实现。 $.unformat.select的源代码根本不处理这种情况。 只需将数据转换为数组并通过value将其传递给函数即可获得相同的效果。