ListObject denetimine yeni satır eklendiğinde verileri doğrulama

Kullanıcılar verilere bağlı bir ListObject denetime yeni satırlar ekleyebilir. Değişiklikleri veri kaynağına işlemeden önce kullanıcının verilerini doğrulayabilirsiniz.

Şunlar için geçerlidir: Bu konudaki bilgiler, Excel için belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Veri doğrulaması

Verilere bağlı bir ListObject satır eklendiğinde olay BeforeAddDataBoundRow oluşturulur. Veri doğrulamanızı gerçekleştirmek için bu olayı işleyebilirsiniz. Örneğin, uygulamanız veri kaynağına yalnızca 18 ile 65 yaş arasındaki çalışanların eklenebilmesini gerektiriyorsa, girilen yaşın satır eklenmeden önce bu aralığın içinde olduğunu doğrulayın.

Not

İstemciye ek olarak her zaman sunucuda kullanıcı girişini de denetlemeniz gerekir. Daha fazla bilgi için bkz . Güvenli istemci uygulamaları.

Veriye bağlı ListObject'e yeni bir satır eklendiğinde verileri doğrulamak için

  1. Kimlik için ve DataTable sınıf düzeyinde değişkenler oluşturun.

    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Yeni DataTable bir oluşturun ve sınıfın Startup olay işleyicisine (belge düzeyi projesinde) veya ThisAddIn sınıfına Sheet1 (VSTO Eklenti projesinde) örnek sütunlar ve veriler ekleyin.

    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. Girilen yaşın kabul edilebilir aralık içinde olup olmadığını denetlemek için olay işleyicisine kod list1_BeforeAddDataBoundRow ekleyin.

    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;
        }
    }
    

Kodu derleme

Bu kod örneğinde, bu kodun görüntülendiği çalışma sayfasında adlı bir ListObject dosyanız list1 olduğu varsayılır.