jqGrid在行编辑上填充选择控件

时间:2011-09-14 09:12:19

标签: jqgrid

我想将xml文件中的大约150个元素添加到jqGrid单元格内的选择控件。我想以两种方式做到这一点:

1.使用editoptions值:

{ name: 'language', width: 100, sortable: false, editable: true, edittype: 'select', editoptions: { value: languageElem()} }

使用从该方法收到的数据:

function languageElem() {
$.ajax({
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    url: 'jqService.asmx/GetLanguages',
    data: {},
    dataType: "json",
    success: function (data) {
        alert("success");
    }
});}

但是我在从ajax部分转发数据时遇到了麻烦。

2.只需访问jqGrid单元格内的选择控件,并在按下编辑按钮时手动添加选项。

这里的问题是我不知道如何访问控件本身。

我在这里使用的代码是:

function startEdit() {
if (selRow > -1) {
    $.ajax({
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        url: 'jqService.asmx/GetLanguages',
        data: {},
        dataType: "json",
        success: function (data) {
            var cell = jQuery("#MainContent_list").getCell(selRow, "language");
            cell.options.length = 0;
            for (var i=0;i<data.d.length;i++)
            {
            }
        }
    });
    jQuery("#MainContent_list").jqGrid('restoreRow', selRow);
    jQuery("#MainContent_list").jqGrid('editRow', selRow);
}

我的问题是:

1.关于第一个想法,我该怎么做才能修复方法,以便控件能够获得所需的值?

2.关于第二个想法,我怎么能访问行内的控件?

谢谢,Catalin

1 个答案:

答案 0 :(得分:0)

而不是value属性(editoptions: { value: languageElem()}),您应该使用dataUrlbuildSelect(请参阅the documentation)。因为很难从ASMX HTML片段<select><option>...</option></select>返回,所以您可以提供序列化为JSON的列表,并使用buildSelect将服务器响应转换为HTML片段。在the answerthis one中,您可以找到其他信息。如果您要搜索dataUrlbuildSelect,可以找到更多可以使用的信息和代码示例。