مشاركة عبر


كيفية القيام بما يلي: التحقق من صحة البيانات عند إضافة صف جديد إلى عنصر تحكم ListObject

ينطبق على

تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع.

نوع المشروع

  • مشروعات على مستوى المستند

  • مشروعات على مستوى التطبيق

إصدار Microsoft Office

  • Excel 2007

  • Excel 2010

يمكن للمستخدمين إضافة صفوف جديدة إلى عنصر تحكم ListObject المرتبط بالبيانات. يمكنك التحقق من صحة بيانات المستخدم قبل تنفيذ التغييرات على مصدر البيانات.

التحقق من صحة البيانات

عند إضافة صف إلى ListObject المرتبط بالبيانات ، يتم رفع الحدث BeforeAddDataBoundRow . يمكنك معالجة هذا الحدث لتنفيذ التأكيد الخاص بك . على سبيل المثال، إذا كان التطبيق الخاص بك يتطلب إضافة الموظفين فقط بين الأعمار 18 و 65 إلى مصدر البيانات ، يمكنك التحقق من كون العمر المدخل ضمن هذا النطاق أم لا قبل إضافة الصف.

ملاحظة

يجب عليك دائماً التحقق من إدخال المستخدم على الخادم بالإضافة إلى العميل. لمزيد من المعلومات، راجع Secure Client Applications (ADO.NET).

التحقق من صحة البيانات عند إضافة صف جديد إلى ListObject مرتبط بالبيانات

  1. قم بإنشاء متغيرات للمعرف و DataTable في مستوى الفئة .

    Dim id As Integer = 0
    Dim employeeTable As System.Data.DataTable
    
    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. قم بإنشاءDataTableجديد و قم بإضافة نموذج للأعمدة و البيانات في معالج الحدث Startup من الفئة Sheet1 (في مشروع على مستوى المستند) أو الفئة ThisAddIn (في مشروع مستوى التطبيق).

    employeeTable = New System.Data.DataTable("Employees")
    
    Dim column As System.Data.DataColumn = _
        employeeTable.Columns.Add("Id", GetType(Int32))
    column.AllowDBNull = False
    
    employeeTable.Columns.Add("FirstName", GetType(String))
    employeeTable.Columns.Add("LastName", GetType(String))
    employeeTable.Columns.Add("Age", GetType(Int32))
    
    employeeTable.Rows.Add(id, "Nancy", "Anderson", 56)
    employeeTable.Rows.Add(id, "Robert", "Brown", 44)
    id += 1
    
    list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age")
    
    employeeTable = new System.Data.DataTable("Employees");
    
    System.Data.DataColumn column = employeeTable.Columns.Add
        ("Id", typeof(int));
    column.AllowDBNull = false;
    
    employeeTable.Columns.Add("FirstName", typeof(string));
    employeeTable.Columns.Add("LastName", typeof(string));
    employeeTable.Columns.Add("Age", typeof(int));
    
    employeeTable.Rows.Add(id, "Nancy", "Anderson", "56");
    employeeTable.Rows.Add(id, "Robert", "Brown", "44");
    id++;
    
    list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age");
    
    list1.BeforeAddDataBoundRow +=new Microsoft.Office.Tools.Excel.
        BeforeAddDataBoundRowEventHandler(list1_BeforeAddDataBoundRow);
    
  3. قم بإضافة تعليمة برمجية إلى معالج الحدث list1_BeforeAddDataBoundRow للتحقق ما إذا كان العمر الذي أدخلته يقع ضمن النطاق المقبول.

    Private Sub list1_BeforeAddDataBoundRow(ByVal sender As Object, ByVal e As  _
        Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs) _
        Handles list1.BeforeAddDataBoundRow
    
        Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row
    
        If Not row("Age") Is Nothing And Not row("Age") Is Convert.DBNull Then
    
            Dim ageEntered As Integer = CType(row("Age"), Int32)
    
            If ageEntered < 21 Or ageEntered > 65 Then
                System.Windows.Forms.MessageBox.Show _
                    ("Age must be between 21 and 65. The row cannot be added.")
                e.Cancel = True
                Return
            End If
    
            row("ID") = id
            id += 1
    
        Else
            System.Windows.Forms.MessageBox.Show("You must enter an age.")
            e.Cancel = True
        End If
    End Sub
    
    private void list1_BeforeAddDataBoundRow(object sender,
        Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs e)
    {
        System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row;
    
        if (row["Age"] != null && row["Age"] != Convert.DBNull)
        {
            int ageEntered = (int)row["Age"];
    
            if (ageEntered < 21 || ageEntered > 65)
            {
                System.Windows.Forms.MessageBox.Show
                    ("Age must be between 21 and 65. The row cannot be added.");
                e.Cancel = true;
                return;
            }
            row["ID"] = id;
            id++;
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("You must enter an age.");
            e.Cancel = true;
        }
    }
    

التحويل البرمجي للتعليمات البرمجية

يفترض مثال التعليمات البرمجية هذا وجود ListObject موجودة باسم list1 على ورقة العمل حيث تظهر هذه التعليمات البرمجية.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تعيين أعمدة ListObject إلى بيانات

المبادئ

توسيع مستندات Word ومصنفات Excel في وظائف إضافية على مستوى التطبيق في وقت التشغيل

إضافة عناصر تحكم إلى مستندات Office في وقت التشغيل

عنصر تحكم ListObject

أتمتة Excel عن طريق استخدام الكائنات الموسعة

موارد أخرى

عناصر التحكم في مستندات Office