我们有一个表单面板,其中托管了一个可编辑的网格和一个“保存”按钮。
PROJ.RWA = Ext.extend(Ext.form.FormPanel,
{
initcomponent:function(){
....
.....
var rwa_config = {
.......
tbar:rwa_tbar,
items: [
borr_grid, nonBorr_grid
],
buttons: [{
text: 'Save',
handler:this.getValues
},
.....]
.......
};
Ext.apply(this, Ext.apply(this.initialConfig, rwa_config));
PROJ.RWA.superclass.initComponent.call(this, rwa_config);
}
}
此组件是从index.html加载的
如果网格上有未保存的更改,我们需要确保用户在离开此面板时收到警告。
如果网格是“脏”的,并且还没有点击“保存”-当用户导航到其他页面/面板时,我们应该弹出一个警告。
我们该怎么做呢?
发布于 2014-09-05 18:54:52
您可以向事件beforedestroy
添加侦听器,或者如果它正常关闭,则可以查看beforeclose
。
它看起来像这样:
listeners: {
beforedestroy: function( panel, eOpts ){
//check if there are unsaved changes (and show dialog or smoething)
}
}
您还可以在“之前”-event中使用return false;
来阻止实际操作。
还可以查看beforedestroy doc。
发布于 2014-09-05 19:06:22
首先:我猜当单击save时,您会调用一个返回success:true的操作。然后,存储中的所有记录都被标记为“非脏”。
因此,您只需检查网格是否有脏记录。
根据您“离开”网格的确切方式,您可以监听以下一个或多个事件:
beforeclose
beforedestroy
beforehide
在处理程序中,您将执行以下操作:
onGridExit:function(grid) {
if(grid.getStore().getUpdatedRecords().length>0) {
Ext.MessageBox.alert('Unsaved changes','Would you like to save your changes?',function() {
...
});
return false;
}
}
https://stackoverflow.com/questions/25683738
复制相似问题