1

我正在尝试格式化 jqGrid 上的单元格,以便当用户编辑它时,他们会看到组合框的自定义实现(称为 activecombo),因为 select html 组件很难看。

我已经阅读了这篇文章并查看了演示,但它们似乎并没有完全符合我的要求。这是我尝试过的:

    var maritalStatusPickerFunction = function(cellvalue, options,
            rowObject) {
        var optionsArray = [ {
            "id" : 1,
            "status" : "Married"
        }, {
            "id" : 2,
            "status" : "Divorced"
        }, {
            "id" : 3,
            "status" : "Separated"
        }, {
            "id" : 4,
            "status" : "Widowed"
        }, {
            "id" : 5,
            "status" : "Unmarried"
        }

        ];
        var comboInput = $("<input type='text' value='" + cellvalue
                + "' />");
        comboInput.activecombo( {
            source : optionsArray
        });
        return comboInput;
    };

    $('#relationshipsGrid').jqGrid( {
        datatype : "local",
        colNames : [ 'Contact', 'Relationship' ],
        colModel : [ {
            name : 'contact',
            index : 'contact',
            width : 420
        }, {
            name : 'relationship',
            index : 'relationship',
            editable : true,
            formatter : maritalStatusPickerFunction,
            width : 120
        } ],
        width : 600,
        height : 100,
        cellEdit : true,
        editurl : "server.php"
    });

但这显然不是我应该做的,因为这只是在单元格的输入中显示 Object 对象。

任何人都可以给我任何指示吗?

谢谢,

艾米

4

1 回答 1

5

如果您需要在编辑单元格期间实现组合框的自定义实现,您应该使用自定义编辑控件而不是自定义格式化程序

自定义格式化程序用于将单元格的 HTML 表示形式构建为 string。自定义编辑控件用于创建自定义 DOM 元素,该元素将放置在<span>编辑字段的元素内。举个例子,看看这个这个这个旧答案。

我不知道 activecombo 插件,但在我看来你不能编写自定义编辑控件。取而代之的是,您可以尝试在编辑选项中定义dataInit事件句柄例如

editoptions: {
    dataInit : function (elem) { 
        $(elem).activecombo( {
            source : optionsArray
        }); 
    } 
} 

或者如果你有任何问题,比如

editoptions: {
    dataInit : function (elem) { 
        setTimeout(function(){
            $(elem).activecombo( {
                source : optionsArray
            }); 
        },100);
    } 
} 

顺便说一句,您可以对搜索执行相同的操作。然后用户将在搜索/过滤对话框中使用相同的优势。

于 2011-03-02T12:04:43.560 回答