spreadjs - 向列表验证器添加空选项
问题描述
我正在尝试在列表验证器上向我的用户添加选项,以允许选择任何选项或空白选项。Spreadjs 具有我使用的 IgnoreBlanks 设置,因此当用户使用删除键或退格键并删除单元格时,它会正确验证。但是,我希望使用与 Excel 中相同的功能,它允许列表验证器中的空白选项,在列表的一部分。
我试图定位<select>
包含列表的元素并以编程方式添加空元素,但是,它在用户选择空选项后崩溃。我还尝试将不同的转义字符添加到列表中。如果我选择代表空字符串或制表符的字符,它不会向列表中添加新选项。如果我使用任何奇怪的字符,甚至是空字符\0
,你会得到一个新的选项来选择,但内容是你看到的典型矩形,当你的字体没有你要显示的字符时。
我还使用示例页面中的常规 ListValidator 进行了测试,而不是我们的自定义功能,也不起作用。
https://www.grapecity.com/demos/spread/JS/TutorialSample/#/demos/basicDataValidator
我也尝试过创建一个 FormulaListValidator,如果我的范围有空单元格,我可以在我的列表中获得一个空选项,但是,因为范围可能有重复,我会得到重复的选项。
解决方案
经过一番研究后,我发现了一种不同语言的解决方法,我适应了 Typescript(Angular 6)
export const getListValidatorFromArray = (spread: GC.Spread.Sheets.Workbook, data: any[]) => {
// saving validation list values in a hidden sheet
spread.addSheet(spread.getSheetCount());
const sheet = spread.getSheet(spread.getSheetCount() - 1);
sheet.visible(false);
for (let i = 0; i < data.length; i++) {
sheet.setValue(i, 0, data[i]);
}
// create validator based on the values
const dv = GC.Spread.Sheets.DataValidation.createFormulaListValidator(
'=' + sheet.name() + '!$A$1:' + sheet.name() + '!$A$' + data.length
);
return dv;
};
注意:这会为您创建的每个验证器创建一个额外的工作表。确保尽可能多地重用它们(即在创建变量时将其分配给变量,并将变量重用于使用相同的其他列/行)。
推荐阅读
- sql-server - 查询完全外连接
- r - R:bind_rows 由于未命名的参数 1 而失败
- reactjs - 使用 Dispatch 函数有条件地渲染组件
- rust - 如何通过使用 reqwest 传递秘密来添加基本授权标头?
- django - 如何获取类对象中存在任何列表元素的对象
- spring-cloud - 在没有自动配置的情况下配置 spring-cloud 负载均衡器
- yadcf - 替换文本类型的占位符
- android - 颤振视图未更新
- spring - 部署 rest api war 并从 App Manager 开始会产生错误 FAIL - Application at context path
- python - 有没有一种简单的方法可以将 Catboost.plot_tree 输出发送到绘图窗格(在 spyder 中)?