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
Buat variabel untuk ID dan DataTable di tingkat kelas.
Buat kolom dan data sampel baru DataTable dan tambahkan di
Startup
penangananSheet1
aktivitas kelas (dalam proyek tingkat dokumen) atauThisAddIn
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);
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.