Простой компонент данных для редактирования табличных данных.
Демо: https://anmcgrath.github.io/blazordatasheet/
dotnet add package BlazorDatasheetВ Program.cs добавьте необходимые услуги:
builder . Services . AddBlazorDatasheet ( ) ; В _layout.cshtml или index.html добавить
<link href="_content/BlazorDatasheet/sheet-styles.css" rel="stylesheet"/>
и
<script src="_content/BlazorDatasheet/blazor-datasheet.js" type="text/javascript"></script>
Blazor DataSheet предоставляет компонент Blazor , который принимает лист.
Лист содержит данные и конфигурацию для таблицы. Данные устанавливаются на ячейку или могут быть построены с использованием объекта objecteditorbuilder, который создает таблицу данных на основе списка объектов.
В следующем коде отображается пустая сеть данных 3 x 3.
< Datasheet
Sheet = "sheet" / >
@code {
private Sheet sheet ;
protected override void OnInitialized ( )
{
sheet = new Sheet ( 3 , 3 ) ;
}
}Редактор по умолчанию - текстовый редактор, но может быть изменен, определяя свойство типа каждой ячейки.
Значения ячейки могут быть установлены несколькими способами:
sheet . Cells [ 0 , 0 ] . Value = "Test"
sheet . Range ( "A1" ) . Value = "Test" ;
sheet . Cells . SetValue ( 0 , 0 , "Test" ) ;
sheet . Commands . ExecuteCommand ( new SetCellValueCommand ( 0 , 0 , "Test" ) ) ; Значения ячейки хранятся внутри CellValue обертки. Значения неявно преобразуются при установке выше, а CellValueType присваивается ячейке.
CellValueType используется для оценки формул и может быть одним из следующих:
Empty = 0,
Error = 1,
Array = 2,
Unknown = 3,
Sequence = 4,
Reference = 5,
Number = 6,
Date = 7,
Text = 8,
Logical = 9,
Это преобразование можно контролировать, например, при настройке типа ячейки в «Текст» значения всегда будут храниться в виде строк, и преобразование не будет сделано.
Преобразование может быть дополнительно модифицировано с помощью Sheet.Cells.BeforeCellValueConversion . Изменив свойство NewValue аргумента, сохраняется значение, которое сохраняется.
Формула может быть применена к клеткам. Когда клетки или диапазоны, которые изменяют ячейки Формулы, изменяется, значение ячейки перечисляется.
sheet . Cells [ 0 , 0 ] . Formula = "=10+A2"Форматы ячеек могут быть установлены следующими способами:
sheet . Range ( "A1:A2" ) . Format = new CellFormat ( ) { BackgroundColor = "red" } ;
sheet . Commands . ExecuteCommand (
new SetFormatCommand ( new RowRegion ( 10 , 12 ) , new CellFormat ( ) { ForegroundColor = "blue" } ) ) ;
sheet . SetFormat ( sheet . Range ( new ColumnRegion ( 5 ) ) , new CellFormat ( ) { FontWeight = "bold" } ) ;
sheet . Cells [ 0 , 0 ] . Format = new CellFormat ( ) { TextAlign = "center" } ;Когда формат ячейки установлен, он будет объединен в любые существующие форматы ячейки в области, к которым он применяется. Любой не нулевой формат будет объединена:
sheet . Range ( "A1" ) . Format = new CellFormat ( ) { BackgroundColor = "red" } ;
sheet . Range ( "A1:A2" ) . Format = new CellFormat ( ) { ForegroundColor = "blue" } ;
var format = sheet . Cells [ 0 , 0 ] . Format ; // backroundColor = "red", foreground = "blue"
var format2 = sheet . Cells [ 1 , 0 ] . Format ; // foreground = "blue"Тип ячейки указывает, какой рендер и редактор используется для ячейки. Типы ячеек также помогают с явными преобразованием при установке значений клеток.
sheet . Range ( "A1:B5" ) . Type = "boolean" ; // renders a checkboxПользовательские редакторы и визуализаторы могут быть определены. Смотрите примеры для получения дополнительной информации.
Проверка данных может быть установлена на ячейках/диапазонах. Существует два режима проверки: строгие и не строгие. Когда валидатор строгается, значение ячейки не будет установлено редактором, если он не выполняет проверку.
Если валидация не является строгой, значение можно установить во время редактирования, но при рендеринге будет отображаться ошибка проверки.
Хотя строгая проверка может быть установлена на ячейке, значение можно изменить программно, но оно будет отображаться как ошибка проверки.
sheet . Validators . Add ( new ColumnRegion ( 0 ) , new NumberValidator ( isStrict : true ) ) ;Регион - это геометрическая конструкция, например:
var region = new Region ( 0 , 5 , 0 , 5 ) ; // r0 to r5, c0 to c5
var cellRegion = new Region ( 0 , 0 ) ; // cell A1
var colRegion = new ColumnRegion ( 0 , 4 ) ; // col region spanning A to D
var rowRegion = new RowRegion ( 0 , 3 ) ; // row region spanning 1 to 4Диапазон - это область, которая также знает о листе. Диапазоны могут быть использованы для установки определенных частей листа.
var range = sheet . Range ( "A1:C5" ) ;
var range = sheet . Range ( new ColumnRegion ( 0 ) ) ;
var range = sheet . Range ( 0 , 0 , 4 , 5 ) ;