jqGrid初始化DropDownList项

时间:2014-07-25 21:43:19

标签: javascript jquery asp.net json jqgrid

我有一个jqGrid控件,其中包含一个下拉列表字段。列表中的项目来自服务器端使用ajax的方法,但我不确定如何构造返回的json以使其与网格兼容。我查看this question并根据答案,看起来网格需要以下格式的下拉菜单:

[value] : [display text]

我对JavaScript比较陌生,不知道这是什么类型的数据(我假设它是一个键值对?)所以我不知道如何从我的json对象创建这种类型的数组。这就是我试过的:

function populateTable(){
    $.ajax({
        type: "POST",
        url: "MyHttpHandler.ashx",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            var jsonObject = jQuery.parseJSON(result.d);

            var dropdpwnvalues = new[];

            for(var i = 0; i< jsonObject.length; i++){
                dropdpwnvalues.push({ jsonObject[i].id : jsonObject[i].name });
            }

            // The rest of the function
    );
}

dropdpwnvalues变量是绑定到网格的变量。请注意,jsonObject上有idname,但此语法

dropdpwnvalues.push({ jsonObject[i].id : jsonObject[i].name });

显然是不正确的。有关如何从这个json对象制作列表的任何想法吗?

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是创建一个字符串而不是一个对象数组:

var sessionStream = ""

for (var i = 0; i < sessions.length; i++) {
    sessionStream += sessions[i].id + ":" + sessions[i].name + ";";
}

// Remove the trailing ';' in the stream
sessionStream = sessionStream.substring(0, sessionStream.length - 1);

我原本以为网格正在列出一个列表。它可以很好地绑定到一个字符串。

答案 1 :(得分:0)

您需要按以下格式返回“选择”列表的JSON值:

{1:'One',2:'Two'}

并且,我相信你在jqGrid的loadcomplete事件中使用它。因此,设置JSON值只需将其用作

loadcomplete : function(){      
        $.ajax({
             type: "POST",
             url: "MyHttpHandler.ashx",
             dataType: "json",
             success : function ( result) {
                  $("#gridId").setColProp('columnName', { editoptions: { value: result}});
                  }
             });
          }