为ExtJS 4中Ext.grid.plugin.RowEditing的按钮设置ID是否可行?
当然可以实现!给RowEditing插件里的保存、取消按钮设置ID有两种实用方案,看你需求选就行:
方案一:自定义按钮(直接指定ID)
这种方式可以完全掌控按钮的配置,直接在插件的buttons选项里定义自己的保存/取消按钮,同时设置id或itemId:
this.rowEditor = Ext.create('Ext.grid.plugin.RowEditing', { clicksToMoveEditor: 1, autoCancel: false, errorSummary: false, // 自定义按钮替换默认组件 buttons: [{ text: '保存', id: 'myCustomSaveBtn', // 全局唯一ID,注意不要和其他组件冲突 itemId: 'rowEditorSaveBtn', // 组件内唯一ID,推荐用这个更安全 handler: function() { this.up('roweditor').saveEdit(); // 调用插件的保存方法 } }, { text: '取消', id: 'myCustomCancelBtn', itemId: 'rowEditorCancelBtn', handler: function() { this.up('roweditor').cancelEdit(); // 调用插件的取消方法 } }], listeners: { // 你的其他监听逻辑 } });
这里更推荐用itemId,因为它是相对于父组件的唯一标识,不会和全局其他组件的ID冲突;如果必须用全局唯一的id,要确保整个应用里没有重复值。
方案二:渲染后修改默认按钮ID
如果你不想替换默认按钮,只想给原有按钮加ID,可以在插件渲染完成后,通过组件查询找到默认按钮,再设置ID:
this.rowEditor = Ext.create('Ext.grid.plugin.RowEditing', { clicksToMoveEditor: 1, autoCancel: false, errorSummary: false, listeners: { afterrender: function(editor) { // 根据按钮文本查找默认保存按钮(注意匹配你的语言环境,英文是"Save") const saveBtn = editor.down('button[text="保存"]'); if (saveBtn) { saveBtn.setId('myRowEditorSaveBtn'); // 或者设置itemId:saveBtn.setItemId('rowEditorSave'); } // 查找默认取消按钮(英文是"Cancel") const cancelBtn = editor.down('button[text="取消"]'); if (cancelBtn) { cancelBtn.setId('myRowEditorCancelBtn'); } }, // 你的其他监听逻辑 } });
这种方法的好处是保留了默认按钮的样式和原有逻辑,不需要自己写handler,只需要在渲染后补加ID即可。注意按钮文本要和当前ExtJS的语言包一致,如果是英文环境,要把文本改成对应的英文单词。
两种方法都能满足你的需求,根据实际场景选择就好~
内容的提问来源于stack exchange,提问作者nicolasbilous
相关产品推荐
相关产品推荐

