我有一個jqGrid
控件,其中包括一個下拉列表字段。列表中的項目來自服務器端使用ajax
的方法,但我不確定如何構建返回的json
以使其與網格兼容。我看着this question並根據答案,好像電網預計,下拉菜單的格式如下:jqGrid初始化DropDownList項目
[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對象中創建列表?
dropdpwnvalues.push({value:jsonObject [i] .id,displayText:jsonObject [i] .name}); ? – Joe
我想你在當前的代碼中犯了很多錯誤。例如'var jsonObject = jQuery.parseJSON(result.d);'行顯示你不需要**將返回的** Object **數據轉換爲'String'。而不是你應該從''MyHttpHandler.ashx''方法返回** Object **。 .NET Framework將自動將序列化爲JSON *。 '.ajax'會將JSON中的數據反序列化爲對象,並且'result.d'將成爲您可以直接使用的對象。不需要顯式調用'jQuery.parseJSON'。 – Oleg
你發佈的關於jqGrid的信息太少了,因此我不得不猜測。您可能會遇到其他問題,因爲使用**填充網格數據的格式意味着您在用於填充網格的數據中使用了ID。這意味着你需要使用'formatter:「select」'將數據顯示爲文本(名稱而不是id)。在從服務器返回填充網格的數據之前,必須先設置editoptions.value或formatoptions.value **,這一點很重要,將由jqGrid處理。有關詳細信息,請參見[答案](http://stackoverflow.com/a/19427444/315935)。 – Oleg