Procedura: gestire errori quando viene aggiunta una nuova riga a un controllo ListObject
Aggiornamento: Luglio 2008
Si applica a |
---|
Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati. Progetti a livello di documento
Progetti a livello di applicazione
Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione. |
Gli utenti possono aggiungere nuove righe a un controllo ListObject associato a dati. Talvolta la relazione fra l'oggetto elenco e l'origine dati provoca errori di routine. Ad esempio, è possibile mappare le colonne che si desidera visualizzare nel controllo ListObject. In tal modo, se si omettono colonne che prevedono restrizioni (ad esempio un campo che non accetta valori null), ogni creazione di riga comporta la generazione di errori. È possibile scrivere codice per aggiungere i valori mancanti in un gestore eventi per l'evento ErrorAddDataBoundRow.
Per gestire gli errori che si verificano quando viene aggiunta una riga con associazione dati
Creare variabili per l'ID e la classe DataTable a livello di classe.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
Creare un nuovo oggetto DataTable e aggiungere colonne e dati di esempio nel gestore eventi Startup della classe Sheet1 (in un progetto a livello di documento) o della classe ThisAddIn (in un progetto a livello di applicazione).
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.ErrorAddDataBoundRow += new Microsoft.Office.Tools.Excel. ErrorAddDataBoundRowEventHandler(list1_ErrorAddDataBoundRow);
Nel gestore eventi per l'evento ErrorAddDataBoundRow, aggiungere nel campo ID il successivo numero incrementale di ID e aggiungere di nuovo la riga.
Private Sub list1_ErrorAddDataBoundRow(ByVal sender As Object, ByVal e As _ Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs) _ Handles list1.ErrorAddDataBoundRow Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row If TypeOf (e.InnerException) Is NoNullAllowedException Then row("Id") = id id += 1 e.Retry = True End If End Sub
private void list1_ErrorAddDataBoundRow(object sender, Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs e) { System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row; if (e.InnerException is NoNullAllowedException) { row["Id"]= id; id++; e.Retry = true; } }
Compilazione del codice
- In questo esempio di codice si presume che sia già disponibile un controllo ListObject denominato list1 nel foglio di lavoro in cui appare il codice.
Vedere anche
Attività
Procedura: mappare le colonne ListObject ai dati
Procedura: convalidare dati quando viene aggiunta una nuova riga a un controllo ListObject
Concetti
Sviluppo di componenti aggiuntivi a livello di applicazione per Excel
Aggiunta di controlli ai documenti di Office in fase di esecuzione
Informazioni sulla persistenza di ordini di colonne e righe ListObject
Altre risorse
Controlli nei documenti di Office
Cronologia delle modifiche
Date |
History |
Motivo |
---|---|---|
Luglio 2008 |
Modificato l'esempio affinché possa essere utilizzato in un componente aggiuntivo a livello di applicazione. |
Modifica di funzionalità in SP1. |