新西兰奶牛 发表于 2024-12-12 11:18:57

【14.2.6】自定义查找窗口

本帖最后由 Wilson.Zhang 于 2025-1-3 09:33 编辑

产品:SpreadJS
版本:14.2.6
调研编号:SJS-27735
Last Review:2024-12-16
当前进展:非功能问题,已提供正确使用方式。

【需求】: 在 designer 上增加一个按钮,打开 查找窗口,但是要求这个查找窗口不要有替换功能

【现有做法】:
   1、取得查找窗口的 template,移除“替换”标签页,然后注册成 cusFindDialog
    var findTemplate = GC.Spread.Sheets.Designer.getTemplate("findDialogTemplate");

    //移除第二个元素
    findTemplate.title='查找';
    findTemplate.content[0].children.splice(1, 1);
    GC.Spread.Sheets.Designer.registerTemplate("cusFindDialog", findTemplate);





2. 调用 GC.Spread.Sheets.Designer.showDialog("cusFindDialog");打开自定义的窗体


【问题】:
1、虽然打开后的窗口没有了 “替换” 标签页,但是输入内容点击 “查找下一个“时,出现 js 错误:
   

   2、选项区域默认是打开的,需要变成默认不打开


Wilson.Zhang 发表于 2024-12-12 12:12:06

您好!根据您提供的操作代码,我也复现了问题。调研下先,调研编号为SJS-27735,之后会及时向您同步结论。请您耐心等候。

Wilson.Zhang 发表于 2024-12-13 10:22:10

您看哈,GC.Spread.Sheets.Designer.showDialog是个静态方法,非某个具体对象调用,因此这样调用弹出的查找对话框缺少了一些必要的上下文信息,这才导致使用时抛出异常信息。

对于您的需要,可以参考如下代码,在工具栏添加一个自定义按钮以弹出符合您需要的仅包含查找功能的对话框:
var baseTemplate = GC.Spread.Sheets.Designer.getTemplate("findDialogTemplate");
var onlyFindTemplate = GC.Spread.Sheets.Designer.getTemplate("findDialogTemplate");
onlyFindTemplate.content.children.splice(1, 1);
var findCmd = GC.Spread.Sheets.Designer.getCommand("find");
var findCmdExe = findCmd.execute;
findCmd.bigButton = true;
findCmd.commandName = 'findEx';
findCmd.execute = function (context, selectValue) {
    GC.Spread.Sheets.Designer.registerTemplate('findDialogTemplate', onlyFindTemplate);
    findCmdExe.apply(this, arguments);
    GC.Spread.Sheets.Designer.registerTemplate('findDialogTemplate', baseTemplate);
};
findCmd.text = "My Find";
var config = GC.Spread.Sheets.Designer.DefaultConfig;
config.ribbon.buttonGroups.commandGroup.children.push('findEx');
config.commandMap = {
    findEx: findCmd
}
designer.setConfig(config);

新西兰奶牛 发表于 2024-12-16 16:34:02

OK,已解决!非常感谢 !

Wilson.Zhang 发表于 2024-12-16 17:46:12

新西兰奶牛 发表于 2024-12-16 16:34
OK,已解决!非常感谢 !

不客气,那就结帖了。如有新问题,欢迎发新帖沟通。
:mj72:
页: [1]
查看完整版本: 【14.2.6】自定义查找窗口