2014-10-07 28 views
0

我需要有關組合框一些幫助,多選擇在ExtJS的4ExtJS的4多選編輯表單不加載選項

我需要在我的形式通過中央表分裂一個簡單的多對多關係:

用戶 - < User_Group> - Group。

其中:

用戶:ID,名稱,年份

USER_GROUP:USER_ID,GROUP_ID

:ID,名稱

我沒問題在用戶的創建形式中,我可以通過php將所有組保存到數據庫中由組合框引起。

現在,我的所有用戶都有一個網格,當我嘗試開始編輯其中一個網格時,組合框的選擇未加載,但組合框的字段顯示已更正的選擇的ID。

例如:

當我嘗試編輯該用戶(JSON代碼)

{ 
    "id": 86, 
    "name": "tempname", 
    "year": 1492, 
    "groups_id": [1,2,3] 
} 

編輯形式填充有所有的信息和組合框的字段顯示1,2,3 ,但是沒有在其下拉菜單中選擇

這是我的組合框:

{ 
    xtype: 'combobox', 
    multiSelect: true, 

    name: 'groups_id', 
    fieldLabel: 'Group/s', 

    valueField: 'id', 
    displayField: 'name', 

    store: 'Groups', 
    allowBlank: false 
} 

那麼,爲什麼沒有越做越thtat形式的負載選擇?爲什麼我傳遞來加載組合框(groups_id)的ID沒有真正綁定它? 這是錯誤的用戶的JSON結構?

我對這個通過了兩項天... ...是的......我是很新,ExtJS的;)

回答

0

好,我設法得到一些東西后三明治工作。

的問題是,當我加載( 'groups_id')編輯的記錄,record.get(例如[ 「1」, 「2」, 「3」 的陣列]),而我需要一個整數的數組(如[1,2,3])。

要轉換/解析record.get( 'groups_id')我做了這個:

//from [ "1" , "2" , "3"] to [ 1 , 2 , 3] 

//preparing an empty array for the parsed ids 
var ids_integer = new Array(); 

//one by one, from string to int 
record.get('groups_id').forEach(function(id){ 
    ids_integer.push(parseInt(id));  
}); 

//sobstitute the String Array with the Int Array 
record.set('groups_id', ids_integer); 

var view = Ext.widget('useredit');  
view.down('form').loadRecord(record); //finally load record in my form