Добавить пустую опцию в список валидаторов - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь добавить опцию для моих пользователей, чтобы в List Validator разрешить выбор любой из опций или пустую опцию. Spreadjs имеет настройку IgnoreBlanks, которую я использую, поэтому, когда пользователь использует клавишу удаления или клавишу возврата и удаляет ячейку, он правильно проверяет. Однако я хотел бы использовать ту же функциональность, что и в Excel, которая допускает пустые параметры в валидаторе списка, в части списка.

Я попытался нацелиться на элемент <select>, который содержит список, и программно добавить пустой элемент, однако он вылетает после того, как пользователь выбрал пустую опцию. Я также пытался добавить различные экранированные символы в список. Если я выберу символ, представляющий пустую строку или вкладку, он не добавит новую опцию в список. Если я использую какой-либо странный символ или даже нулевой символ \0, вы получаете новую опцию для выбора, но содержимое - это тот типичный прямоугольник, который вы видите, когда в вашем шрифте нет символа, который вы пытаетесь отобразить.

Я также протестировал использование обычного ListValidator, как на страницах примеров, а не наших пользовательских функций и тоже не работает.

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

Я также пытался создать FormulaListValidator, и если в моем диапазоне есть пустые ячейки, я мог бы получить пустую опцию в своем списке, однако, поскольку у диапазона могут быть дубликаты, я получаю дублированные параметры.

1 Ответ

1 голос
/ 10 мая 2019

После небольшого исследования я нашел обходной путь на другом языке, который я адаптировал для 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;
};

Примечание: Это создает дополнительный лист для каждого валидатораВы создаете.Обеспечивает максимально возможное их повторное использование (т. Е. Присвоение переменной переменной при ее создании и повторное использование переменной для других столбцов / строк, в которых используется тот же самый).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...