2011-02-27 41 views
0

我有一個使用商店的可編輯網格。我想在一個字段中插入一個組合框。 這是我網格店:可編輯網格中的ComboBox:無法看到值

new Ext.data.Store({ .... 
proxy: new Ext.data.HttpProxy...... 
reader: new Ext.data.JsonReader({ 
      root: 'rows', 
      fields: [..... {name:'wid', mapping: 'wid'}, 

還有另一家店只組合框,這「婦女參與發展」和「名稱」字段。 在我的列模型:

header: 'Worker', 
    dataIndex: 'wid', 
    editor: new Ext.grid.GridEditor(workerCmb), 
    renderer:function(value, p, record){ 
    return record.data['name'];} 

而且該組合本身:

valueField: 'wid', 
      displayField: 'name', 

當電網加載其現場「工人」是空的(這是確定),但它沒有組合框。當我開始編輯它時,我會看到所有列表。編輯完成後,'id'被保存到商店中,但'name'不顯示,組合框也不顯示。 我在做什麼錯?

回答

2

這有助於:

Ext.util.Format.comboRenderer = function(combo){ 
    return function(value){ 
     var record = combo.findRecord(combo.valueField || combo.displayField, value); 
     return record ? record.get(combo.displayField) : combo.valueNotFoundText; 
    } 
} 
+0

我將如何在ExtJS設計器中執行此操作? – 2011-03-21 16:53:52

+0

我不與ExtJS設計師合作,但我認爲你可以把它放在腳本的頭部。並且在網格字段中:'editor:yourCmb, \t \t renderer:Ext.util.Format.comboRenderer(yourCmb)' – lvil 2011-03-22 11:21:57

1

如果您啓用過濾功能在你的組合框(「queryMode =本地」)保持每一個你把信應用商店的想法。因此,函數findRecord將無法找到篩選出的名稱的顯示名稱。這將影響您在同一個網格中的其他線條,因爲在完成編輯後,整個網格視圖將會刷新。

爲了確保在循環啓動時不會丟失任何記錄,請在嘗試查找記錄之前從組合框中刪除過濾器。

Ext.util.Format.comboRenderer = function(combo){ 
    return function(value){ 
     combo.store.clearFilter(); // -> addition 
     var record = combo.findRecord(combo.valueField || combo.displayField, value); 
     return record ? record.get(combo.displayField) : combo.valueNotFoundText; 
    } 
}