Чтобы защитить содержимое от редактирования, вы можете заблокировать одну или сразу несколько ячеек. В правом нижнем углу заблокированной ячейки появится изображение желтого замка.
Чтобы заблокировать ячейку, передайте методу lockCell три параметра:
// блокирует ячейку на пересечении 3-й строки и 2-й колонки
$$("ssheet").lockCell(3, 2, true);
Заблокировать/разблокировать несколько ячеек можно тем же методом, но с другими параметрами:
// блокирует 7 ячеек во 2-й строке
$$("ssheet").lockCell({ row:2, column:1 }, { row:2, column:7 }, true);
// блокирует 7 ячеек во 2-й колонке
$$("ssheet").lockCell({ row:1, column:2 }, { row:7, column:2 }, true);
// блокирует 10 ячеек в 1-й и 2-й строке
$$("ssheet").lockCell({ row:1, column:1 }, { row:2, column:5 }, true);
Если ячейка (ячейки) не заданы, метод заблокирует ячейку, выделенную на момент вызова метода.
Вы можете заменить установленное по умолчанию изображение на подсвечивание фона, применив CSS стили:
<style>
.webix_lock:after{
content:" ";
}
.webix_lock {
background-color:#99f29d;
}
</style>
Related sample: Styling locked cells
Вы можете проверить заблокирована ли ячейка с помощью метода isCellLocked.
Метод принимает два параметра:
и возвращает true, если ячейка заблокирована и false если разблокирована.
var isLocked = $$("ssheet").isCellLocked(3, 2);
Вы можете добавить редактор в ячейку таблицы. Опции редактора берутся из диапазона ячеек или из массива, который вы передадите методу. Вы также можете явно указать, добавлять ли пустую опцию.
Для добавления редактора используйте метод setCellEditor. Метод принимает три параметра:
editor:"ss_richselect"
) диапазон ссылок на ячейки или массив с опциями редактора $$("ss1").setCellEditor(8, 1, {
editor:"ss_richselect",
options:["One", "Two", "Three"]
}, "Sheet1");
// или
$$("ss1").setCellEditor(8, 2, {
editor:"ss_richselect",
options:"B3:B7",
empty:true
}, "Sheet1");
Вы можете получить набор опций редактора с помощью метода getCellEditor.
Метод принимает в качестве параметров ID строки и колонки.
$$("ss1").getCellEditor(8, 1, "Sheet1");
Метод возвращает объект с двумя свойствами:
{ editor:"ss_richselect", options:["One","Two","Three"] }
// или
{editor:"ss_richselect", options:"B3:B7"}
Вы можете добавить чекбоксы и радио кнопки в ячейки, установить и проверить их текущее состояние с помощью методов SpreadSheet API.
Чтобы добавить чекбоксы в ячейки, используйте метод addCheckbox. Чтобы добавить радио кнопки в ячейки, используйте метод addRadio. Оба метода принимают в качестве параметра объект с начальной и конечной ячейками диапазона, в который необходимо добавить чекбоксы или радио кнопки.
{row:id, column:id}
{row:id, column:id}
$$("ssheet").addRadio({
start:{row:1, column:1},
end:{row:3, column:1}
});
$$("ssheet").addCheckbox({
start:{row:1, column:3},
end:{row:3, column:3}
});
Чтобы установить отметку в чекбокс или радио кнопку, используйте соответствующие методы: markCheckbox и markRadio method.
Оба метода принимают следующие параметры:
$$("ssheet").markRadio(2,1);
$$("ssheet").markCheckbox(1,3);
Если вам нужно получить текущее состояние чекбокса или радио кнопки, вы можете применить метод getCellValue к нужной ячейке:
const isChecked = $$("ssheet").getCellValue(1, 1, false);
// -> 1 - checked, 0 - unchecked
Кроме того, к нужной ячейке можно обратиться из другой ячейки с помощью метода setCellValue. Если чекбокс/радио кнопка отмечена, вы получите 1, если нет - 0:
// получение состояния радио кнопки в ячейке A1 из ячейки B1
$$("ssheet").setCellValue(1,2,"=A1");
Также, вы можете задать более сложное условие, например, использовать текст, который будет отрисован в текущей ячейке, в зависимости от состояния чекбокса или радио кнопки в нужной ячейке:
// получение состояния радио кнопки в ячейке A2 из ячейки A5
$$("ssheet").setCellValue(5,1,"=IF(A2,\"A2 marked\", \"A2 is not marked\")");
Вы можете задать фильтр для ячеек с помощью метода setCellFilter.
Передайте методу следующие параметры:
// массив с опциями
$$("ss1").setCellFilter(1,2, ["", "Europe", "Asia", "America"]);
// диапазон ссылок на ячейки
$$("ss1").setCellFilter(2,2, "B3:B7");
Чтобы получить фильтр ячейки, используйте метод getCellFilter. Он принимает следующие параметры:
и возвращает объект с набором опций и id строки и колонки: and returns an object with a set of options and the IDs of the row and column:
Например:
$$("ssheet").getCellFilter(2, 1, "Sheet1");
// -> { options: Array(4), row: 2, column: 1 }
SpreadSheet позволяет сортировать ячейки. Диапазон для сортировки определяется текущим выделением ячеек или параметром, переданным методу sortRange. Всего метод принимает два параметра:
// возрастающая (по умолчанию) сортировка заданного диапазона
$$("ssheet").sortRange("B2:B4");
// убывающая сортировка заданного диапазона
$$("ssheet").sortRange("B2:B4", "desc");
// убывающая сортировка выделенного диапазона
$$("ssheet").sortRange(null,"desc");
Вы можете добавить правило валидации для содержимого ячеек. Правило валидации может быть добавлено в ячейку через интерфейс SpreadSheet:
Это окно содержит набор правил валидации и их атрибутов. После того, как пользователь добавляет правило валидации в ячейку, клик по ней вызывает textarea с деталями правила:
Каждое правило валидации включает в себя ряд параметров:
Правила валидации могут быть следующих типов:
В зависимости от типа правила, оно может иметь следующие атрибуты:
Вы можете задать правила валидации для ячейки прямо в дата сете.
Для этого используйте validation модуль дата объекта. Вы можете задать правила валидации в одном массиве:
data.validation = [
[
"2",
"1",
{
"type": "number",
"integer": 1,
"empty": 1,
"condition": "greater",
"value": "0",
"inputMessage": "Rules:\n\n- integer greater than 0\n- include empty",
"errorHandle": "info",
"errorTitle": "Incorrect data!",
"errorMessage": "Should be integer greater than 0!"
}
],
[
"2",
"2",
{
"type": "date",
"empty": 0,
"condition": "greater",
"value": "45292",
"inputMessage": "Rules:\n\n- date after 01/01/2024\n- exclude empty",
"errorHandle": "stop",
"errorTitle": "Incorrect data!",
"errorMessage": "Should be date after 01/01/2024!"
}
]
];
Коллекция validation также позволяет управлять правилами валидации:
Чтобы добавить правило валидации для ячейки, используйте метод validation.add(row, column, rule, page). Он принимает следующие параметры:
// добавление правила валидации для ячейки B3 страницы 2
$$("ssheet").validation.add(
3,
2,
{
"type": "number",
"integer": 1,
"empty": 1,
"condition": "greater",
"value": "0",
"inputMessage": "Rules:\n\n- integer greater than 0\n- include empty",
"errorHandle": "info",
"errorTitle": "Incorrect data!",
"errorMessage": "Should be integer greater than 0!"
},
2
);
Чтобы удалить примененное правило валидации из ячейки, используйте метод validation.remove(row, column, page). Он принимает следующие параметры:
// удаление правила валидации из ячейки B3 на странице 2
$$("ssheet").validation.remove(3, 2, "Sheet1");
Метод validation.get(row, column, page) позволяет получить правило валидации указанной ячейки. Он принимает следующие параметры:
// получение правила валидации из ячейки B3 на странице 2
$$("ssheet").validation.get(3, 2, "Sheet1");
Чтобы добавить/удалить подсветку для ячейки с правилами валидации, используйте метод validation.highlight(state, page) method. Он принимает следующие параметры:
// удаление подсветки ячеек с правилами валидации со страницы 2
$$("ssheet").validation.highlight(false, "Sheet1");
В ячейку также можно поместить небольшую диаграмму (спарклайн), что позволит быстро отслеживать динамически изменяющиеся данные.
Чтобы поместить спарклайн внутрь ячейки, необходимо использовать метод addSparkline со следующими параметрами:
$$("ssheet").addSparkline(rowId, columnId, config, page);
Давайте поместим в ячейку E5 синий спарклайн с типом "line"
:
$$("ssheet").addSparkline(5, 5, {type:"line", range:"B4:E4", color:"#6666FF"});
Related sample: Adding sparklines
Вы можете добавить в ячейку изображение.
Используйте метод addImage, который принимает три параметра:
$$("ssheet").addImage(2,3, "http://docs.webix.com/media/desktop/image.png", "Sheet1");
Также вы можете добавить комментарии к ячейкам SpreadSheet.
Используйте метод add() объекта comments. Метод принимает три параметра:
// добавляет комментарий в ячейку B3
$$("ssheet").comments.add(3,2,"text");
API объекта comments также позволяет получать комментарии определенной ячейки или удалять ненужные комментарии:
// получает комментарий ячейки B3
$$("ssheet").comments.get(3,2);
// удаляет комментарий из ячейки B3
$$("ssheet").comments.remove(3,2);
Вы можете указать, какие именно данные будут отображаться в ячейках SpreadSheet, используя плейсхолдеры.
Плейсхолдер - это объект со свойствами данных, которые могут быть заданы как значения SpreadSheet. Чтобы установить плейсхолдер, используйте метод setPlaceholder:
$$("ssheet").setPlaceholder({value:"France", expense:1366, income:842});
Чтобы указать свойство плейсхолдера в ячейке вместо значения, используйте следующую конструкцию:
={{property}}.
Например, для ячейки со значением "expense" плейсхолдер будет указан следующим образом:
"={{expense}}".
Если вы зададите новый плейсхолдер для SpreadSheet, значения всех ячеек, в которых были указаны свойства этого плейсхолдера, обновятся.
$$("ssheet").setPlaceholder({value:"Poland", expense:684, income:781});
Наверх