【问题标题】:Add empty option to List Validator向列表验证器添加空选项
【发布时间】:2019-05-08 11:43:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: spreadjs grapecity


    【解决方案1】:

    经过一番研究,我发现了一种不同语言的解决方法,我适应了 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;
    };
    

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

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 2014-09-04
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 2012-10-01
      • 2012-04-24
      • 1970-01-01
      • 2013-09-18
      相关资源
      最近更新 更多