تنفيذ ميزة ربط البيانات لـ GridDesktop في أوراق الأعمال
إنشاء قاعدة بيانات عينية
- إنشاء قاعدة بيانات عينية للاستخدام مع المثال. لقد استخدمنا Microsoft Access لإنشاء قاعدة بيانات عينية تحتوي على جدول المنتجات (المخطط أدناه).
- تمت إضافة ثلاث سجلات وهمية إلى جدول المنتجات. السجلات في جدول المنتجات
إنشاء تطبيق عيني
الآن قم بإنشاء تطبيق سطح المكتب بسيط في Visual Studio وقم باتباع الخطوات التالية.
- قم بسحب عنصر التحكم “GridControl” من صندوق الأدوات وإفلاته على النموذج.
- إسقاط أربعة أزرار من صندوق الأدوات في أسفل النموذج وتعيين خاصية نصها كما يلي ربط الورقة العمل, إضافة صف, حذف صف و تحديث إلى قاعدة البيانات على التوالي.
إضافة مساحة الاسم وإعلان المتغيرات العالمية
نظرًا لأن هذا المثال يستخدم قاعدة بيانات Microsoft Access, أضف مساحة الاسم System.Data.OleDb في أعلى الكود.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Adding namespace to the top of code | |
using System.Data.OleDb; |
يمكنك الآن استخدام الفئات الموجودة تحت هذه المساحة.
- إعلان المتغيرات العالمية.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Declaring global variable | |
OleDbDataAdapter adapter; | |
OleDbCommandBuilder cb; | |
DataSet ds; |
ملء مجموعة البيانات بالبيانات من قاعدة البيانات
الآن قم بالاتصال بقاعدة البيانات العينية لاحضار البيانات وملءها في كائن DataSet.
- استخدم كائن OleDbDataAdapter للاتصال بقاعدة البيانات العينية وملء DataSet بالبيانات المحضرة من جدول المنتجات في قاعدة البيانات, كما هو موضح في الكود أدناه.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
private void DataBindingFeatures_Load(object sender, EventArgs e) | |
{ | |
// The path to the documents directory. | |
string dataDir = Utils.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Creating Select query to fetch data from database | |
string query = "SELECT * FROM Products ORDER BY ProductID"; | |
// Creating connection string to connect with database | |
string conStr = @"Provider=microsoft.jet.oledb.4.0;Data Source=" + dataDir + "dbDatabase.mdb"; | |
// Creating OleDbDataAdapter object that will be responsible to open/close connections with database, fetch data and fill DataSet with data | |
adapter = new OleDbDataAdapter(query, conStr); | |
// Setting MissingSchemaAction to AddWithKey for getting necesssary primary key information of the tables | |
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; | |
/* | |
* Creating OleDbCommandBuilder object to create insert/delete SQL commmands | |
* automatically that are used by OleDbDatAdapter object for updating | |
* changes to the database | |
*/ | |
cb = new OleDbCommandBuilder(adapter); | |
// Creating DataSet object | |
ds = new DataSet(); | |
// Filling DataSet with data fetched by OleDbDataAdapter object | |
adapter.Fill(ds, "Products"); | |
} |
ربط ورقة العمل بكائن DataSet
قم بربط ورقة العمل بجدول المنتجات في مجموعة البيانات:
- الوصول إلى ورقة العمل المطلوبة.
- ربط ورقة العمل بجدول منتجات DataSet.
أضف الكود التالي إلى حدث نقر زر “ربط ورقة العمل”.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing the worksheet of the Grid that is currently active | |
Worksheet sheet = gridDesktop1.GetActiveWorksheet(); | |
// Binding the Worksheet to Products table by calling its DataBind method | |
sheet.DataBind(ds.Tables["Products"], ""); |
تحديد رؤوس الأعمدة لورقة العمل
تحميل ورقة العمل المقترنة الآن بالبيانات بنجاح ولكن تم وسم رؤوس الأعمدة A ، B و C افتراضيًا. سيكون من الأفضل تعيين رؤوس الأعمدة إلى أسماء الأعمدة في جدول قاعدة البيانات.
لتعيين رؤوس الأعمدة لورقة العمل:
- احصل على التسميات لكل عمود من DataTable (Products) في مجموعة البيانات.
- قم بتعيين التسميات لرؤوس أعمدة ورقة العمل.
أضف الكود المكتوب في حدث نقر زر ‘ربط ورقة العمل’ بمقتطف الكود التالي. من خلال القيام بذلك ، سيتم استبدال رؤوس الأعمدة القديمة (A ، B و C) بـ ProductID ، ProductName و ProductPrice.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Iterating through all columns of the Products table in DataSet | |
for (int i = 0; i < ds.Tables["Products"].Columns.Count; i++) | |
{ | |
// Setting the column header of each column to the column caption of Products table | |
sheet.Columns[i].Header = ds.Tables["Products"].Columns[i].Caption; | |
} |
تخصيص عرض وأنماط الأعمدة
لتحسين مظهر ورقة العمل بشكل إضافي ، يمكن تعيين عرض وأنماط الأعمدة. على سبيل المثال ، في بعض الأحيان ، قد تحتوي رأس العمود أو القيمة داخل العمود على عدد كبير جدًا من الأحرف التي لا تتناسب داخل الخلية. لحل مثل هذه المشاكل ، يدعم Aspose.Cells.GridDesktop تغيير عرض الأعمدة.
أضف الكود التالي إلى زر ‘ربط ورقة العمل’. سيتم تخصيص عرض الأعمدة وفقًا للإعدادات الجديدة.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Customizing the widths of columns of the worksheet | |
sheet.Columns[0].Width = 70; | |
sheet.Columns[1].Width = 120; | |
sheet.Columns[2].Width = 80; |
تدعم Aspose.Cells.GridDesktop أيضًا تطبيق الأنماط المخصصة للأعمدة. الكود التالي ، المضاف إلى زر ‘ربط ورقة العمل’ ، يخصص أنماط الأعمدة لجعلها أكثر إشراقًا.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Iterating through each column of the worksheet | |
for (int i = 0; i < sheet.ColumnsCount; i++) | |
{ | |
// Getting the style object of each column | |
Style style = sheet.Columns[i].GetStyle(); | |
// Setting the color of each column to Yellow | |
style.Color = Color.Yellow; | |
// Setting the Horizontal Alignment of each column to Centered | |
style.HAlignment = HorizontalAlignmentType.Centred; | |
// Setting the style of column to the updated one | |
sheet.Columns[i].SetStyle(style); | |
} |
الآن قم بتشغيل التطبيق وانقر فوق زر ‘ربط ورقة العمل’.
إضافة الصفوف
لإضافة صفوف جديدة إلى ورقة العمل ، استخدم طريقة إضافة الصف في فئة Worksheet. يتم إلحاق صف فارغ في الجزء السفلي ويتم إضافة DataRow جديد إلى مصدر البيانات (هنا ، يتم إضافة DataRow جديدة إلى DataTable لـ DataSet). يمكن للمطورين إضافة عدد غير محدود من الصفوف عن طريق استدعاء طريقة AddRow مرة أخرى ومرة أخرى. عند الانتهاء من إضافة صف ، يمكن للمستخدمين إدخال القيم فيه.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Adding new row to the worksheet | |
gridDesktop1.GetActiveWorksheet().AddRow(); |
حذف الصفوف
تدعم Aspose.Cells.GridDesktop أيضًا حذف الصفوف باستدعاء طريقة إزالة الصف في فئة ورقة العمل. يتطلب إزالة الصف باستخدام Aspose.Cells.GridDesktop مؤشر الصف الذي يجب حذفه.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Getting the index of the focused row | |
int focusedRowIndex = gridDesktop1.GetActiveWorksheet().GetFocusedCell().Row; | |
// Removing the focused row fro the worksheet | |
gridDesktop1.GetActiveWorksheet().RemoveRow(focusedRowIndex); |
أضف الكود التالي إلى زر ‘حذف الصف’ وقم بتشغيل التطبيق. يتم عرض عدد قليل من السجلات قبل حذف الصف. عند تحديد صف والنقر على زر ‘حذف الصف’ ، يتم إزالة الصف المحدد.
حفظ التغييرات في قاعدة البيانات
أخيرًا، لحفظ أي تغييرات قام بها المستخدمون في ورقة البيانات إلى قاعدة البيانات، استخدم طريقة Update لكائن OleDbDataAdapter. تأخذ طريقة Update مصدر البيانات (مجموعة البيانات، الجدول وما إلى ذلك) لورقة البيانات لتحديث قاعدة البيانات.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing the worksheet of the Grid that is currently active | |
Worksheet sheet = gridDesktop1.GetActiveWorksheet(); | |
// Updating the database according to worksheet data source | |
adapter.Update((DataTable)sheet.DataSource); |
- أضف الكود أعلاه إلى زر تحديث القاعدة البيانات.
- قم بتشغيل التطبيق.
- قم بإجراء بعض العمليات على بيانات ورقة البيانات، مثلاً إضافة صفوف جديدة وتحرير أو إزالة البيانات الحالية.
- ثم انقر على تحديث القاعدة البيانات لحفظ التغييرات في قاعدة البيانات.
- تحقق من قاعدة البيانات لرؤية أن سجلات الجدول تم تحديثها وفقًا لذلك.