将空选项添加到列表验证器

时间:2019-05-08 11:43:07

标签: spreadjs grapecity

我正在尝试向用户添加该选项,以便在列表验证器上允许选择任何选项或空白选项。 Spreadjs具有我使用的IgnoreBlanks设置,因此,当用户使用Delete键或Backspace键并删除其正确验证的单元格时,就可以使用它。 但是,我很想使用与Excel中相同的功能,该功能允许在列表验证器中的空白列表中使用空白选项。

我试图定位保存列表的ES元素,并以编程方式添加了空元素,但是,在用户选择空选项后,它崩溃了。 我还尝试将不同的转义字符添加到列表中。如果我选择一个代表空字符串或制表符的字符,则不会在列表中添加新选项。如果我使用任何奇怪的字符,甚至使用空字符<select>,您都可以选择一个新选项,但是内容是当字体没有要显示的字符时看到的典型矩形。

我还使用示例页面中的常规ListValidator进行了测试,而不是我们的自定义功能,因此也不起作用。

https://www.grapecity.com/demos/spread/JS/TutorialSample/#/demos/basicDataValidator

我也尝试过创建FormulaListValidator,如果我的范围内有空单元格,那么我可以在列表上得到一个空选项,但是,因为范围可能重复,所以我得到了重复的选项。

1 个答案:

答案 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;
};

注意:这会为您创建的每个验证器创建一个额外的表格。确保尽可能多地重用它们(即在创建变量时将其分配给一个变量,并将该变量重用于其他使用相同变量的列/行)。