Bagikan melalui


Memvalidasi data saat baris baru ditambahkan ke kontrol ListObject

Pengguna dapat menambahkan baris baru ke ListObject kontrol yang terikat ke data. Anda dapat memvalidasi data pengguna sebelum melakukan perubahan pada sumber data.

Berlaku untuk: Informasi dalam topik ini berlaku untuk proyek tingkat dokumen dan proyek Add-in VSTO untuk Excel. Untuk informasi selengkapnya, lihat Fitur yang tersedia berdasarkan aplikasi Office likasi dan jenis proyek.

Validasi Data

Setiap kali baris ditambahkan ke ListObject yang terikat ke data, BeforeAddDataBoundRow peristiwa akan dinaikkan. Anda dapat menangani kejadian ini untuk melakukan validasi data Anda. Misalnya, jika aplikasi Anda mengharuskan hanya karyawan berusia antara 18 dan 65 tahun yang dapat ditambahkan ke sumber data, verifikasi bahwa usia yang dimasukkan termasuk dalam rentang tersebut sebelum baris ditambahkan.

Catatan

Anda harus selalu memeriksa input pengguna di server selain klien. Untuk informasi selengkapnya, lihat Mengamankan aplikasi klien.

Untuk memvalidasi data saat baris baru ditambahkan ke ListObject terikat data

  1. Buat variabel untuk ID dan DataTable di tingkat kelas.

    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Buat kolom dan data sampel baru DataTable dan tambahkan di Startup penanganan Sheet1 aktivitas kelas (dalam proyek tingkat dokumen) atau ThisAddIn kelas (dalam proyek Add-in VSTO).

    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. Tambahkan kode ke list1_BeforeAddDataBoundRow penanganan aktivitas untuk memeriksa apakah usia yang dimasukkan termasuk dalam rentang yang dapat diterima.

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

Mengkompilasi kode

Contoh kode ini mengasumsikan bahwa Anda memiliki nama list1 yang sudah ada ListObject pada lembar kerja tempat kode ini muncul.