2011-10-13 99 views
1

我試圖讓東西看起來像分開displayField和ValueField:http://dev.sencha.com/deploy/ext-3.4.0/examples/grid/edit-grid.htmlExtJS的3.4編輯網格:如何在

但我想改變光柱:

我希望它包含IDS而不是實際值。

我可以強制組合框從呈現不同的值,但不是實際的列值(其實我不知道在哪裏(商店ID值映射列不只是爲編輯)):

new Ext.grid.EditorGridPanel({ 
    ... 
    store: new Ext.data.Store ({ 
      ... 
      fields: [ 
         'MagicId', 
         ... 
        ] 
     }) 
    columns: [ 
       { 
        header: 'Magic', 
        dataIndex: 'MagicId', 
        editor: new Ext.form.ComboBox({ 
         store: new Ext.data.Store({ 
          ... 
          fields: ['id', 'title']}), 
         valueField: 'id', 
         displayField: 'title', 
         editable: 'false' 
        }) 
       }, 
       ... 
      ] 

當我在組合框中選擇「Magic title」時,無論如何我都會在我的網格中獲得MagicId。我明白爲什麼發生這種情況,但無法按照我需要的方式工作...

我試圖用...替換所有不必要的代碼以幫助您閱讀。

感謝您的關注。

回答

2

將ID字段保留在網格/商店中,然後使用「渲染器」屬性顯示其他內容。 ID文本映射可以存儲在一個數組或對象:

{ 
    header: 'Magic', 
    dataIndex: 'MagicId', 
    renderer: function(value) { 
     return magicIdValueArray[value]; 
    } 
    ... 
} 

編輯: 既然你已經在組合店鋪的ID值映射,我會用那家商店來獲取值(它需要在組合框之外聲明)。

renderer: function(value) { 
    var record = comboStore.findRecord('id', value); 
    return record.title; 
}