2013-08-28 68 views
2

我有一個組合框,其中有幾個靜態(硬編碼)值顯示在網格內。如何爲組合框設置默認值

默認情況下,它應該顯示組合框中的第一個值。我嘗試了幾件事,但它不起作用。 我首先創建StaticComboBox然後

 var StaticComboBox = Ext.extend(Ext.form.ComboBox, { 
    mode: 'local', 
    triggerAction: 'all', 
    editable: false, 
    valueField: 'value', 
    displayField: 'label', 
    data: [], 
    initComponent: function() { 
    this.store = new Ext.data.ArrayStore({ 
     fields: ['value', 'label'], 
     data: this.data 
    }); 
    StaticComboBox.superclass.initComponent.call(this); 
    } 
}); 


    var cm = new Ext.grid.ColumnModel([ 
    { 
     id:'language', 
     header: "Language", 
     dataIndex: 'language', 
     width: 235, 
     menuDisabled: true, 
     editor: new StaticComboBox({ 
      name: 'Reasons', 
      data: [ 
      [0, 'Reason 1'], 
      [1, 'Second Reason'], 
      [2, 'Something else'] 
      ] 
     }), 

     listeners: { 
      load: function() { 
       //set the ComboBox value here 
       var combo = Ext.getCmp('language'); 
       combo.setValue("1"); 
      } 
      } 
    } 
]); 

回答

0

這是不可能的,你會得到一個負荷事件引起您的商店已經填補。 嘗試聽渲染或其他東西。

這裏是一個工作示例:http://jsfiddle.net/4baem/3/

使用Ext.data.Store,然後你的數據必須是一組記錄:

new StaticComboBox({ 
     name: 'Reasons', 
     data: [{value: 0, label: 'reason1'}, {value: 1, label: 'reason2'}]  
});