Jos*_*mit 5 javascript extjs extjs4.1
我有一个GridPanel,在工具栏中有两个按钮“拒绝更改”和“保存更改”。下面的代码显示了每个按钮的功能,到目前为止,一切正常。
Ext.define('APP.view.MyGrid' ,{
extend: 'Ext.grid.Panel',
...
initComponent: function() {
var me=this;
me.store = myStore;
me.plugins = [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1, autoCancel: false
}),
];
me.rejectBtn = {
xtype:'button', id:'kbsGridCancelBtn', text:'Reject changes',
handler: function() { me.store.rejectChanges(); }
},
me.saveBtn = {
xtype:'button', id:'kbsGridSaveBtn', text:'Save changes',
handler: function() { me.store.sync(); }
},
me.bbar = Ext.create('Ext.toolbar.Toolbar', {
items : [{ xtype: 'tbfill'},me.rejectBtn,'-',me.saveBtn]
});
me.callParent(arguments);
}
...
});
Run Code Online (Sandbox Code Playgroud)
仅当用户修改了网格数据时,如何启用/禁用按钮(或其他任何操作)?即仅当任何网格行/字段变脏时(反之亦然)?我的代码应侦听哪个侦听器?
如问题所示,有一个CellEditing网格插件。通过侦听 CellEditing 插件的validateedit事件(当网格中的数据发生更改时会触发该事件),人们可以使用该事件的参数来使用模型实例的函数来更新存储的行set。当然,在完成所需的验证之后。代码根据返回的内容决定是否启用/禁用按钮getModifiedrecords。
代码:
...
listeners: {
'validateedit': function(cep, e, eOpts) {
var me = this,
rowIdx = e.rowIdx, // row index
fieldName = e.field,
newVal = e.value,
storeRow = this.store.getAt(rowIdx);
// assuming valid input, proceed with the below
storeRow.set(fieldName, newVal);
// if modified records > 0 then enable buttons
var enableButtons = Boolean(me.store.getModifiedRecords().length);
if (enableButtons) {
/* enable buttons */
} else { /* disable buttons */ }
}, scope: this
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12332 次 |
| 最近记录: |