[英]ext js 4 grid multiselect
I have grid我有网格
Ext.define('a.view.a', {
extend: 'Ext.grid.Panel',
alias: 'widget.list',
store: 'a.store.store',
multiSelect: false,
enableKeyEvents: true,
initComponent: function() {
var me = this;
var user = TR.user;
this.addEvents('edit');
this.columns = [{
dataIndex: 'Id',
width: 50,
align: 'center',
sortable: false
}];
this.actions = {
edit: Ext.create('Ext.Action', {
text: 'Изменить заявку',
icon: 'Content/Resources/images/editDoc.gif',
cls: 'selected-griditem-button',
handler: function() {
this.fireEvent('edit', this.getRequest());
},
scope: this
})
};
var contextMenu = Ext.create('Ext.menu.Menu', {
items: [
this.actions.edit
]
});
this.on({
itemcontextmenu: function(view, rec, node, index, e) {
this.getSelectionModel().select(index);
e.stopEvent();
contextMenu.showAt(e.getXY());
return false;
},
beforeitemdblclick: function(gr, rowIndex, e) {
this.fireEvent('edit', this.getRequest());
}
});
this.viewConfig = {
listeners: {
itemkeydown: function(v, r, item, index, e) {
if (e.getKey() == e.DELETE) {
e.stopEvent();
this.fireEvent('del', this.getRequest());
}
},
scope: this
}
};
this.callParent(arguments);
},
getRequest: function() {
var sm = this.getSelectionModel();
var rs = sm.getSelection();
if (rs.length) {
return rs[0];
}
return null;
}
});
in my controller i have function that exec when i click on item in grid在我的控制器中,我有当我点击网格中的项目时执行的功能
onSelectionChange: function (sm, rs) {
alert('wtf');
}
Question is问题是
when I click on item in grid first time I have messagebox with "wtf" second time on same item - don't have(this is good)当我第一次点击网格中的项目时,我第二次在同一项目上有带有“wtf”的消息框 - 没有(这很好)
but when I do multiSelect: true each time when i click on same item I have message(this is not good:()但是当我执行 multiSelect: true 时,每次单击同一项目时我都会收到消息(这不好:()
How can I do first variant, but with multiSelect: true
我怎样才能做第一个变体,但使用
multiSelect: true
Use the 'itemclick' event instead of the 'selectionchange' event.使用 'itemclick' 事件而不是 'selectionchange' 事件。 Here's a standalone example:
这是一个独立的示例:
Ext.onReady(function () {
Ext.define('Model', {
extend: 'Ext.data.Model',
fields: [
{name: 'field1'},
],
idProperty: 'field1'
});
Ext.define('Grid', {
extend: 'Ext.grid.Panel',
multiSelect: true,
initComponent: function () {
this.store = Ext.create('Ext.data.ArrayStore', {
model: 'Model',
data: [
['value1'],
['value2'],
['value3']
]
});
this.columns = [
{dataIndex: 'field1', flex: 1}
];
this.callParent(arguments);
}
});
var grid = Ext.create('Grid', {
renderTo: Ext.getBody()
});
grid.on('selectionchange', function (grid, selected, options) {
console.log(selected);
}, this);
grid.on('itemclick', function (grid, record, item, index, e, options) {
console.log('itemclick: ' + index);
}, this);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.