在jqgrid过滤器工具栏中填充select

时间:2012-02-21 14:50:42

标签: select jqgrid

我尝试使用数据库中的值填充下拉列表。我的.js文件中有以下代码:

function getDropdowndata() {
var sHTML;
var filter;
var url = "dropdown.json";
jQuery.getJSON(url, function (dddata) {
    if (dddata.rows.length > 0) {
        sHTML = "";
        for (x = 0; x < dddata.rows.length; x++) {
            sHTML += (dddata.rows[x].Type + ":" + dddata.rows[x].Type + ";");
        }
        filter = sHTML.substring(0, sHTML.length - 1);
    }
});
return filter;
}

在我的Jqgrid列表中,我有以下内容:

editoptions: { value: ":All;" + getDropdowndata() }

我在这段代码中遇到的问题是,该函数似乎过早执行,因此下拉列表中不包含任何内容。

我假设的原因是,如果我在返回之前在javascript函数内部发出警报,则下拉列表中会显示值,并且一切似乎都有效。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可能希望尝试使用动态选择字段的内置功能,而不是使用JSON使用自定义函数获取数据(请参阅文档:select edittype)。您所要做的就是指定一个生成select元素代码的URL。

colModel:[
    {name:'colName',
     editable:true,
     edittype:'select',
     formatter:'select',
     editoptions:{dataUrl:'/path/to/generated/html/select'}
]

然后,您只需要确保/path/to/generated/html/select为select元素返回所有正确的HTML代码。