Добавить пустую опцию в список валидаторов
Я пытаюсь добавить опцию для моих пользователей, чтобы в List Validator разрешить выбор любой из опций или пустую опцию. Spreadjs имеет настройку IgnoreBlanks, которую я использую, поэтому, когда пользователь использует клавишу удаления или клавишу возврата и удаляет ячейку, он правильно проверяет. Тем не менее, я хотел бы использовать ту же функциональность, что и в Excel, которая позволяет пустые параметры в валидаторе списка, в части списка.
Я пытался нацелиться на <select>
элемент, который содержит список и программно добавляет пустой элемент, однако, он вылетает после того, как пользователь выбирает пустую опцию. Я также пытался добавить различные экранированные символы в список. Если я выберу символ, представляющий пустую строку или вкладку, он не добавит новую опцию в список. Если я использую какой-либо странный символ, или даже нулевой символ \0
Вы получаете новую опцию для выбора, но содержимое - это тот типичный прямоугольник, который вы видите, когда в вашем шрифте нет символа, который вы пытаетесь отобразить.
Я также протестировал использование обычного ListValidator, как на страницах примеров, а не наших пользовательских функций и тоже не работает.
https://www.grapecity.com/demos/spread/JS/TutorialSample/
Я также попытался создать FormulaListValidator, и если в моем диапазоне есть пустые ячейки, я мог бы получить пустую опцию в своем списке, однако, поскольку у диапазона могут быть дубликаты, я получаю дублированные параметры.
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;
};
Примечание. Это создает дополнительный лист для каждого созданного вами валидатора. Гарантирует, что вы используете их как можно больше (т.е. присваиваете переменную при ее создании и повторно используете переменную для других столбцов / строк, которые используют тот же самый).