我有一个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
上有id
和name
,但此语法
dropdpwnvalues.push({ jsonObject[i].id : jsonObject[i].name });
显然是不正确的。有关如何从这个json对象制作列表的任何想法吗?
答案 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}});
}
});
}