我正在尝试向用户添加该选项,以便在列表验证器上允许选择任何选项或空白选项。 Spreadjs具有我使用的IgnoreBlanks设置,因此,当用户使用Delete键或Backspace键并删除其正确验证的单元格时,就可以使用它。 但是,我很想使用与Excel中相同的功能,该功能允许在列表验证器中的空白列表中使用空白选项。
我试图定位保存列表的ES
元素,并以编程方式添加了空元素,但是,在用户选择空选项后,它崩溃了。
我还尝试将不同的转义字符添加到列表中。如果我选择一个代表空字符串或制表符的字符,则不会在列表中添加新选项。如果我使用任何奇怪的字符,甚至使用空字符<select>
,您都可以选择一个新选项,但是内容是当字体没有要显示的字符时看到的典型矩形。
我还使用示例页面中的常规ListValidator进行了测试,而不是我们的自定义功能,因此也不起作用。
https://www.grapecity.com/demos/spread/JS/TutorialSample/#/demos/basicDataValidator
我也尝试过创建FormulaListValidator,如果我的范围内有空单元格,那么我可以在列表上得到一个空选项,但是,因为范围可能重复,所以我得到了重复的选项。
答案 0 :(得分:0)
经过一番研究,我发现了一种适用于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;
};
注意:这会为您创建的每个验证器创建一个额外的表格。确保尽可能多地重用它们(即在创建变量时将其分配给一个变量,并将该变量重用于其他使用相同变量的列/行)。