تنفيذ ميزة ربط البيانات لـ GridDesktop في أوراق الأعمال

إنشاء قاعدة بيانات عينية

  1. إنشاء قاعدة بيانات عينية للاستخدام مع المثال. لقد استخدمنا Microsoft Access لإنشاء قاعدة بيانات عينية تحتوي على جدول المنتجات (المخطط أدناه).

todo:image_alt_text

  1. تمت إضافة ثلاث سجلات وهمية إلى جدول المنتجات. السجلات في جدول المنتجات

todo:image_alt_text

إنشاء تطبيق عيني

الآن قم بإنشاء تطبيق سطح المكتب بسيط في Visual Studio وقم باتباع الخطوات التالية.

  1. قم بسحب عنصر التحكم “GridControl” من صندوق الأدوات وإفلاته على النموذج.
  2. إسقاط أربعة أزرار من صندوق الأدوات في أسفل النموذج وتعيين خاصية نصها كما يلي ربط الورقة العمل, إضافة صف, حذف صف و تحديث إلى قاعدة البيانات على التوالي.

إضافة مساحة الاسم وإعلان المتغيرات العالمية

نظرًا لأن هذا المثال يستخدم قاعدة بيانات 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;

يمكنك الآن استخدام الفئات الموجودة تحت هذه المساحة.

  1. إعلان المتغيرات العالمية.
// 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.

  1. استخدم كائن 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

قم بربط ورقة العمل بجدول المنتجات في مجموعة البيانات:

  1. الوصول إلى ورقة العمل المطلوبة.
  2. ربط ورقة العمل بجدول منتجات 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 افتراضيًا. سيكون من الأفضل تعيين رؤوس الأعمدة إلى أسماء الأعمدة في جدول قاعدة البيانات.

لتعيين رؤوس الأعمدة لورقة العمل:

  1. احصل على التسميات لكل عمود من DataTable (Products) في مجموعة البيانات.
  2. قم بتعيين التسميات لرؤوس أعمدة ورقة العمل.

أضف الكود المكتوب في حدث نقر زر ‘ربط ورقة العمل’ بمقتطف الكود التالي. من خلال القيام بذلك ، سيتم استبدال رؤوس الأعمدة القديمة (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);
  1. أضف الكود أعلاه إلى زر تحديث القاعدة البيانات.
  2. قم بتشغيل التطبيق.
  3. قم بإجراء بعض العمليات على بيانات ورقة البيانات، مثلاً إضافة صفوف جديدة وتحرير أو إزالة البيانات الحالية.
  4. ثم انقر على تحديث القاعدة البيانات لحفظ التغييرات في قاعدة البيانات.
  5. تحقق من قاعدة البيانات لرؤية أن سجلات الجدول تم تحديثها وفقًا لذلك.