2012-02-21 64 views
0

我試圖用我的數據庫中的值填充下拉列表。我有下面的代碼在我的.js文件:在jqgrid過濾器工具欄中填充選擇

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() } 

我這段代碼有問題是,看起來該函數正在執行得太早,因爲dropdownlist沒有包含任何內容。

我假設的原因是,如果我在返回前在javascript函數內部放置了一個警報,那麼下拉列表中就會填充值,並且所有內容都可以正常工作。

有什麼建議嗎?

回答

0

您可能想要嘗試使用動態選擇字段的內置功能(請參閱文檔:select edittype),而不是使用JSON獲取具有自定義函數的數據。你所做的就是指定一個url,在那裏生成select元素的代碼。

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

然後你只需要確保/path/to/generated/html/select返回所有的選擇元素的權利HTML代碼。

相關問題