2012-10-05 131 views
2

我想弄清楚如何定義Ext.grid.Panel與不同selTypeExtjs 4:更多selType網格

其實,我需要一個網格,允許我選擇單個單元格和行(帶複選框)。 在第一種情況下,它需要將selType配置定義爲cellmodel,但在第二種情況下需要將selType配置爲checkboxmodel。不幸的是,selType接受一個字符串不是數組。

那麼,有什麼方法可以在單個網格上定義不同的selType嗎?

+2

基類您的網格面板,並從它派生不同的seltypes。我認爲這是你可以完成這個的唯一方法。 – A1rPun

回答

2

好的,可以在同一個網格中配置selTypeselModel

下面是一個例子:

// Store 
var store = Ext.create ('Ext.data.Store', { 
    fields: ['name', 'surname'] , 
    data: [ 
    {name: 'foo', surname: 'bar'} , 
    {name: 'too', surname: 'tar'} , 
    {name: 'zoo', surname: 'zar'} , 
    {name: 'coo', surname: 'car'} , 
    {name: 'boo', surname: 'bar'} 
    ] 
}); 

然後網格:

// Dual selection grid 
Ext.create ('Ext.grid.Panel', { 
    title: 'My Grid' , 
    store: store , 
    width: 300 , 
    height: 300 , 
    renderTo: Ext.getBody() , 

    selModel: Ext.create ('Ext.selection.CheckboxModel') , 
    selType: 'cellmodel' , 
    plugins: { 
    ptype: 'cellediting' , 
    clicksToEdit: 1 
    } , 

    columns: [{ 
    text: 'Name' , 
    dataIndex: 'name' , 
    editor: { 
     xtype: 'textfield' , 
     allowBlank: false 
    } 
    } , { 
    text: 'Surname' , 
    dataIndex: 'surname' , 
    editor: { 
     xtype: 'textfield' 
    } 
    }] 
}); 

但它也有可能遵循建議A1rPun的方式,把它更好地使用更多的selType與層次:

// Base grid with cellediting plugin and cellmodel as selType 
Ext.define ('CellEditGrid', { 
    extend: 'Ext.grid.Panel' , 
    selType: 'cellmodel' , 
    plugins: { 
    ptype: 'cellediting' 
    clicksToEdit: 1 
    } 
}); 

// Adds the checkboxmodel selType to the base CellEditGrid 
Ext.define ('DualSelectionGrid', { 
    extend: 'CellEditGrid' , 
    selType: 'checkboxmodel' , 
    multiSelect: true 
}); 

// Finally, we got our dual selection grid (cellmodel and checkboxmodel) 
Ext.create ('DualSelectionGrid', { 
    title: 'My Grid' , 
    store: store , 
    width: 300 , 
    height: 300 , 
    renderTo: Ext.getBody() , 

    columns: [{ 
    text: 'Name' , 
    dataIndex: 'name' , 
    editor: { 
     xtype: 'textfield' , 
     allowBlank: false 
    } 
    } , { 
    text: 'Surname' , 
    dataIndex: 'surname' , 
    editor: { 
     xtype: 'textfield' 
    } 
    }] 
}); 
+0

+1 - 唯一仍然引起問題的是,在ExtJS 5中,至少點擊組合框的觸發按鈕,日期欄編輯器導致行選擇切換,並且爲此,如果編輯器中出現CheckboxModel的'beforedeselect'事件,則返回false編輯是真的(在編輯模式下)。我只在'取消選擇'之前使用它,因爲我只允許在選定的行上進行編輯! – qdev

-2

它c螞蟻!

grid.getSelectionModel().getCurrentPosition().column

不是當前的編輯器。