我想弄清楚如何定義Ext.grid.Panel
與不同selType
。Extjs 4:更多selType網格
其實,我需要一個網格,允許我選擇單個單元格和行(帶複選框)。 在第一種情況下,它需要將selType
配置定義爲cellmodel
,但在第二種情況下需要將selType
配置爲checkboxmodel
。不幸的是,selType
接受一個字符串不是數組。
那麼,有什麼方法可以在單個網格上定義不同的selType
嗎?
我想弄清楚如何定義Ext.grid.Panel
與不同selType
。Extjs 4:更多selType網格
其實,我需要一個網格,允許我選擇單個單元格和行(帶複選框)。 在第一種情況下,它需要將selType
配置定義爲cellmodel
,但在第二種情況下需要將selType
配置爲checkboxmodel
。不幸的是,selType
接受一個字符串不是數組。
那麼,有什麼方法可以在單個網格上定義不同的selType
嗎?
好的,可以在同一個網格中配置selType
和selModel
。
下面是一個例子:
// 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'
}
}]
});
+1 - 唯一仍然引起問題的是,在ExtJS 5中,至少點擊組合框的觸發按鈕,日期欄編輯器導致行選擇切換,並且爲此,如果編輯器中出現CheckboxModel的'beforedeselect'事件,則返回false編輯是真的(在編輯模式下)。我只在'取消選擇'之前使用它,因爲我只允許在選定的行上進行編輯! – qdev
它c螞蟻!
grid.getSelectionModel().getCurrentPosition().column
不是當前的編輯器。
基類您的網格面板,並從它派生不同的seltypes。我認爲這是你可以完成這個的唯一方法。 – A1rPun