ربط الورقة العمل بكائن مجموعة مخصص باستخدام GridWeb
ربط ورقة العمل بمجموعة مخصصة
لتوضيح هذه الميزة، يقوم هذا المقال بشرح كيفية إنشاء تطبيق عيني خطوة بخطوة. أولاً، قم بإنشاء مجموعة مخصصة ثم استخدم تلك المجموعة للربط بورقة العمل.
الخطوة 1: إنشاء سجل مخصص
قبل إنشاء مجموعة مخصصة، قم بإنشاء صنف لاحتواء السجلات المخصصة التي سيتم تخزينها في المجموعة. الغرض من هذا المقال هو إعطاء فكرة عن كيفية إنشاء مجموعاتك المخصصة الخاصة وربطها بـGridWeb، لذلك كيفية إنشاء السجل المخصص يعتمد عليك.
يستخدم المثال أدناه صنف MyCustomRecord الذي يحتوي على خمسة حقول خاصة وخمس خصائص عامة تسيطر على الوصول إلى الحقول الخاصة. إليك هيكل الخصائص:
- الخاصية StringField1 لقراءة وكتابة stringfield1 (string).
- الخاصية ReadonlyField2 لقراءة فقط stringfield2 (string).
- الخاصية DateField1 لقراءة وكتابة datefield1 (DateTime).
- الخاصية IntField1 لقراءة وكتابة intfield1 (integer).
- الخاصية DoubleField1 لقراءة وكتابة doublefield1 (double).
C#
//Creating a class that will act as record for the custom collection
public class MyCustomRecord
{
//Private data members
private string stringfield1;
private string stringfield2 = "ABC";
private DateTime datefield1;
private int intfield1;
private double doublefield1;
//Creating a string property
public string StringField1
{
get { return stringfield1; }
set { stringfield1 = value; }
}
//Creating a readonly string property
public string ReadonlyField2
{
get { return stringfield2; }
}
//Creating a DateTime property
public DateTime DateField1
{
get { return datefield1; }
set { datefield1 = value; }
}
//Creating an int property
public int IntField1
{
get { return intfield1; }
set { intfield1 = value; }
}
//Creating a double property
public double DoubleField1
{
get { return doublefield1; }
set { doublefield1 = value; }
}
}
الخطوة 2: إنشاء مجموعة مخصصة
الآن، أنشئ مجموعة مخصصة لإضافة سجلات العملاء والوصول إليها. لتبسيط الأمور، يستخدم هذا المثال فئة MyCollection التي تحتوي على مؤشر ثابت. باستخدام هذا المؤشر، يمكننا الحصول على أي سجل مخصص مخزن في المجموعة.
C#
//Creating a custom collection
public class MyCollection : CollectionBase
{
//Leaving the collection constructor empty
public MyCollection()
{
}
//Creating a readonly property for custom collection. This Item property is used by GridWeb control to
//determine the collection's type
public MyCustomRecord this[int index]
{
get { return (MyCustomRecord)this.List[index]; }
}
}
الخطوة 3: ربط ورقة عمل بمجموعة مخصصة
انتهى عملية إنشاء مجموعة مخصصة الآن. الآن استخدم المجموعة المخصصة لربطها بورقة عمل في Aspose.Cells.GridWeb. أولاً، أنشئ نموذج ويب، أضف عنصر التحكم GridWeb إليه وأضف بعض الشفرة.
لاستخدام المجموعة المخصصة للربط، أنشئ أولاً كائنًا من فئة MyCollection (التي تم إنشاؤها في الخطوة السابقة). ثم أنشئ وأضف كائنات MyCustomRecord إلى كائن MyCollection.
أخيراً، قم بتعيين كائن MyCollection كمصدر بيانات الورقة وقم بربط الورقة بالمجموعة. في هذه النقطة، يمكنك أيضًا إنشاء قواعد التحقق لأعمدة الورقة المُرتبطة.
C#
//Implementing Page_Load event handler
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false && this.GridWeb1.IsPostBack == false)
{
//Creating an object of custom collection
MyCollection list = new MyCollection();
//Creating an instance of Random class
System.Random rand = new System.Random();
//Creating a loop that will run 5 times
for (int i = 0; i < 5; i++)
{
//Creating an object of Custom Record
MyCustomRecord rec = new MyCustomRecord();
//Initializing all properties of Custom Record
rec.DateField1 = DateTime.Now;
rec.DoubleField1 = rand.NextDouble() * 10;
rec.IntField1 = rand.Next(20);
rec.StringField1 = "ABC_" + i;
//Adding Custom Record to Collection
((IList)list).Add(rec);
}
//Accessing a desired worksheet
GridWorksheet sheet = GridWeb1.WorkSheets[0];
//Setting the Data Source of worksheet
sheet.DataSource = list;
//Creating columns automatically
sheet.CreateAutoGenratedColumns();
//Setting the validation type of value to DateTime
sheet.BindColumns[2].Validation.ValidationType = ValidationType.DateTime;
//Binding worksheet
sheet.DataBind();
//Assigning an event handler to InitializeNewBindRow event of the worksheet
//sheet.InitializeNewBindRow += new InitializeNewBindRowHandler(GridWeb1_InitializeNewBindRow);
}
}
الخطوة 4: التعامل مع حدث InitializeNewBindRow للورقة العمل
في الشيفرة أعلاه، قد تلاحظ سطر إضافي من الشيفرة يستخدم لتعيين معالج حدث GridWeb1_InitializeNewBindRow لحدث InitializeNewBindRow للورقة العمل. يتم تشغيل هذا الحدث كلما تم إضافة صف مُربط جديد إلى ورقة العمل. قمنا بإنشاء معالج حدث لهذا الحدث بسبب خاصية DateField1 لكائن MyCustomRecord.
يقوم Aspose.Cells.GridWeb تلقائيًا بتهيئة القيم الصحيحة والعشرية بالصفر (0) كلما تمت إضافة صف مُربط جديد إلى عنصر التحكم GridWeb. بالنسبة للتواريخ، نود من عنصر التحكم GridWeb أن يُضيف تاريخ النظام الحالي تلقائيًا. للقيام بذلك، قمنا بإنشاء معالج حدث GridWeb1_InitializeNewBindRow للحدث InitializeNewBindRow.
الوصول إلى حالة معينة من فئة MyCustomRecord من GridWeb باستخدام argument bindObject ومن ثم قم بتعيين تاريخ النظام الحالي لخاصية DateField1.
C#
//Creating GridWeb1_InitializeNewBindRow event handler
private void GridWeb1_InitializeNewBindRow(GridWorksheet sender, object bindObject)
{
//Accessing that custom record object that is newly bound
MyCustomRecord rec = (MyCustomRecord)bindObject;
//Initializing the DateTime of a property when a new row gets bound to the database
rec.DateField1 = DateTime.Now;
}
الخطوة 5: تشغيل التطبيق
قم بتشغيل التطبيق عن طريق الضغط على Ctrl+F5 أو النقر فوق زر Start في VS.NET. يتم فتح نموذج الويب في نافذة متصفح جديدة.
ورقة العمل مُربوطة بمجموعة مخصصة
انقر بزر الماوس الأيمن على عنصر تحكم GridWeb لإضافة أو حذف سجل. على سبيل المثال، أضف سجلًا جديدًا إلى ورق العمل عن طريق تحديد خيار إضافة صف.
تحديد خيار إضافة صف من القائمة
عند إضافة صف جديد إلى ورق العمل، تحتوي الخلايا على بيانات افتراضية بما في ذلك تاريخ النظام الحالي.
تمت إضافة صف جديد إلى ورق العمل ببيانات افتراضية
بعد إجراء تغييرات على البيانات، انقر فوق حفظ أو إرسال لحفظ تغييراتك.
حفظ التغييرات بالنقر على زر الحفظ