場景:ajax
datagrid的每一行容許編輯,一行中有一個字段,編輯時,提供下拉框選項,供選擇。數組
下拉框選項有多個列。以下圖所示:(點擊紅框內的下拉按鈕,會彈出綠框內的內容)this
要求:url
每行彈出的下拉框內容並不徹底一致,須要根據某些變化的條件,隨機獲取。spa
代碼:rest
path是datagrid的一個字段,這個字段在編輯時,須要如下拉選項的形式出現。
這裏只展現一個字段的編輯選項,是如何配置combogrid動態加載下拉框選項值的。
{
// datagrid的其餘字段...
},
{ field : 'path', // 實際屬性 title : 'Path', // 頁面顯示的列名 editor : { type:'combogrid', // 指定使用combogrid組件 options:{ // combogrid組件的屬性設置 panelWidth : 450, panelHeight : 250, idField : 'id', // 選中下拉選項時,實際保存的值,來自columns textField : 'path', // 選中下拉選項時,框中顯示的值,來自columns method : "GET", // ajax動態請求的方式 url : '/rest/test?id=' + $('#id_select').val(), // 在這裏配置url,並很差用。url的值須要在每次請求前動態修改才能夠。 mode : 'remote', // 指定是調用遠程方法獲取 fitColumns : true, multiple: false, editable: false, // 不可編輯 columns : [[ { field : 'id', title : 'id', width : 50, hidden : true }, { field : 'path', title : 'Path', width : 150 }, ]], onBeforeLoad : function(){
// 關鍵代碼:在每次ajax請求前,修改url的值 $(this).datagrid('options').url = '/rest/test?id=' + $('#id_select').val(); }, loadFilter: function (respose){
// 關鍵代碼:將返回的值,轉爲combogrid可識別的數據。
// combogrid只要兩個字段:total,總數;rows,全部列的數據,是一個數組。
// response.data是一個對象list respose.total = respose.data.length; respose.rows = respose.data; return respose; }, } }, },
{
// datagrid的其餘字段... }