مكون ورقة بيانات بسيطة لتحرير البيانات الجدولية.
العرض التوضيحي: https://anmcgrath.github.io/blazordatashet/
dotnet add package BlazorDatasheetفي البرنامج. 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 مكونًا للبلاط في ورقة البيانات يقبل ورقة.
تحتوي الورقة على البيانات والتكوين لورقة البيانات. يتم تعيين البيانات لكل خلية ، أو يمكن بناؤها باستخدام ObjectEditorBuilder ، والتي تنشئ ورقة بيانات تعتمد على قائمة الكائنات.
يعرض الرمز التالي شبكة بيانات فارغة 3 × 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 ) ;