Gewusst wie: Überprüfen der Daten, wenn einem ListObject-Steuerelement eine neue Zeile hinzugefügt wird
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.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Excel 2013 und Excel 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
Datenvalidierung
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 finden Sie unter Creating Secure User Interfaces. |
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
Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit
Automatisieren von Excel mithilfe von erweiterten Objekten