Convalidare i dati quando viene aggiunta una nuova riga a un controllo ListObject
Gli utenti possono aggiungere nuove righe a un controllo ListObject associato ai dati. È possibile convalidare i dati dell'utente prima del commit delle modifiche all'origine dati.
Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento e ai progetti di componente aggiuntivo VSTO per Excel. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.
Convalida dei dati
Ogni volta che viene aggiunta una riga a ListObject associata ai dati, viene generato l'evento BeforeAddDataBoundRow . È possibile gestire questo evento per eseguire la convalida dei dati. Ad esempio, se l'applicazione richiede che solo i dipendenti di età compresa tra i 18 e i 65 anni possano essere aggiunti all'origine dati, verificare che l'età immessa rientra in tale intervallo prima dell'aggiunta della riga.
Nota
È sempre opportuno verificare l'input dell'utente non solo nel client ma anche nel server. Per altre informazioni, vedere Proteggere le applicazioni client.
Per convalidare i dati quando una nuova riga viene aggiunta a un controllo ListObject associato ai dati
Creare variabili per l'ID e la classe DataTable a livello di classe.
Creare una nuova DataTable e aggiungere colonne e dati di esempio nel
Startup
gestore eventi dellaSheet1
classe (in un progetto a livello di documento) oThisAddIn
una classe (in un progetto di componente aggiuntivo 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);
Aggiungere codice al gestore eventi
list1_BeforeAddDataBoundRow
per controllare se l'età immessa è compresa nell'intervallo appropriato.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; } }
Compilare il codice
Questo esempio di codice presuppone che nel foglio di lavoro in cui appare il codice sia già presente un controllo ListObject denominato list1
.
Contenuto correlato
- Estendere i documenti di Word e le cartelle di lavoro di Excel nei componenti aggiuntivi VSTO in fase di esecuzione
- Controlli nei documenti di Office
- Aggiungere controlli ai documenti di Office in fase di esecuzione
- Controllo ListObject
- Automatizzare Excel usando oggetti estesi
- Procedura: Eseguire il mapping delle colonne ListObject ai dati