Oracle APEX 23.2中无需创建新按钮修改交互式网格(Interactive Grid)保存按钮标签的问题
Oracle APEX 23.2中无需创建新按钮修改交互式网格(Interactive Grid)保存按钮标签的问题
我太懂你这种纠结了——想改IG保存按钮的标签,又不想搞自定义按钮丢了原生的复选框检测功能,之前试的代码没生效还摸不着头脑对吧?咱来把这个问题捋明白,给你个简单靠谱的解决办法。
首先说你之前代码的问题:你直接把actions2整个组删了,然后自己加了个新的save按钮,虽然设置了action: "save",但原生的actions2组里其实绑定了很多和IG状态相关的逻辑(比如检测复选框选中、判断按钮是否该禁用这些),直接替换整个组反而把这些原生关联给搞丢了,这也是为啥你觉得自定义按钮不行的原因——其实你根本没必要删了重建,直接改现有按钮的标签就行!
给你个极简的方案,完全保留原生save按钮的所有功能,只改标签:
把下面这段代码放到你的交互式网格的JavaScript初始化代码里(就是你之前写代码的那个地方):
function(config) { var $ = apex.jQuery; // 复制默认的工具栏配置,避免直接修改原对象 var toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(); // 遍历工具栏的所有分组 toolbarData.forEach(function(toolbarGroup) { // 遍历每个分组里的控件 toolbarGroup.controls.forEach(function(control) { // 精准定位到action为"save"的按钮 if (control.action === "save") { // 直接替换成你想要的标签文本 control.label = "test"; // 如果需要保持图标在标签前的样式,保留这个设置即可 control.iconBeforeLabel = true; } }); }); // 把修改后的配置赋值回去 config.toolbarData = toolbarData; return config; }
为啥这个方法好使?
- 没有删除任何原生的工具栏组,只是修改了现有save按钮的
label属性,完全保留了它原本的所有逻辑:包括检测复选框选中、根据编辑状态自动禁用/启用按钮这些原生功能,和你用原生按钮的体验一模一样。 - 代码逻辑简单,不用重建按钮,避免了额外的配置风险。
最后再确认下操作步骤:打开你的IG组件属性,找到高级选项卡下的JavaScript初始化代码,把上面的代码粘贴进去替换掉你之前的代码,保存页面后刷新就能看到按钮标签改成你要的内容啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

