Gewusst wie: Überprüfen der Daten, wenn einem ListObject-Steuerelement eine neue Zeile hinzugefügt wird
Aktualisiert: Juli 2008
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office. Projekte auf Dokumentebene
Projekte auf Anwendungsebene
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Benutzer können einem an Daten gebundenen ListObject-Steuerelement neue Zeilen hinzufügen. Sie können die Daten des Benutzers überprüfen, bevor Sie die Änderungen an die Datenquelle weitergeben.
Wenn ein Fehler auftritt, können Sie mithilfe von Code zusätzliche Daten zur Korrektur des Fehlers bereitstellen. Weitere Informationen finden Sie unter Gewusst wie: Behandeln von Fehlern beim Hinzufügen einer neuen Zeile zu einem ListObject-Steuerelement.
Datenüberprüfung
Sobald eine Zeile einem an Daten gebundenen ListObject hinzugefügt wird, wird das BeforeAddDataBoundRow-Ereignis ausgelöst. Sie können dieses Ereignis behandeln, um die Datenvalidierung auszuführen. Wenn die Anwendung beispielsweise nur Angestellte zwischen 18 und 65 Jahren als mögliche Einträge in der Datenbank zulässt, können Sie überprüfen, ob das eingegebene Alter innerhalb des Bereichs liegt, bevor die Zeile hinzugefügt wird.
Hinweis: |
---|
Sie sollten die Benutzereingabe immer sowohl auf dem Server als auch auf dem Client überprüfen. Weitere Informationen hierzu finden Sie unter Sichere Clientanwendungen (ADO.NET). |
So validieren Sie Daten beim Hinzufügen einer neuen Zeile zum datengebundenen ListObject
Erstellen Sie auf Klassenebene Variablen für die ID und für DataTable.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
Erstellen Sie eine neue DataTable, und fügen Sie Beispielspalten und -daten im Startup-Ereignishandler der Sheet1-Klasse (in einem Projekt auf Dokumentebene) oder der ThisAddIn-Klasse (in einem Projekt auf Anwendungsebene) hinzu.
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.BeforeAddDataBoundRow +=new Microsoft.Office.Tools.Excel. BeforeAddDataBoundRowEventHandler(list1_BeforeAddDataBoundRow);
Fügen Sie dem list1_BeforeAddDataBoundRow-Ereignishandler Code hinzu, mit dem überprüft wird, ob das eingegebene Alter innerhalb des erlaubten Bereichs liegt:
Private Sub list1_BeforeAddDataBoundRow(ByVal sender As Object, ByVal e As _ Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs) _ Handles list1.BeforeAddDataBoundRow Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row If Not row("Age") Is Nothing And Not row("Age") Is Convert.DBNull Then Dim ageEntered As Integer = CType(row("Age"), Int32) If ageEntered < 21 Or ageEntered > 65 Then System.Windows.Forms.MessageBox.Show _ ("Age must be between 21 and 65. The row cannot be added.") e.Cancel = True Return End If row("ID") = id id += 1 Else System.Windows.Forms.MessageBox.Show("You must enter an age.") e.Cancel = True End If End Sub
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; } }
Kompilieren des Codes
In diesem Codebeispiel wird davon ausgegangen, dass ein ListObject mit dem Namen list1 in dem Arbeitsblatt vorhanden ist, in dem dieser Code angezeigt wird.
Siehe auch
Aufgaben
Gewusst wie: Zuordnung von ListObject-Spalten zu Daten
Konzepte
Erweitern von Word-Dokumenten und Excel-Arbeitsmappen in Add-Ins auf Anwendungsebene zur Laufzeit
Entwicklung von Add-Ins auf Anwendungsebene für Excel
Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit
Grundlagen der ListObject-Spalte und der Beibehaltung der Zeilenanordnung
Weitere Ressourcen
Steuerelemente für Office-Dokumente
Änderungsverlauf
Date |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2008 |
Beispiel geändert, damit es in einem Add-In auf Anwendungsebene verwendet werden kann. |
SP1-Featureänderung. |