Jak: Sprawdzanie poprawności danych podczas dodawania nowego wiersza do formantu ListObject
Użytkownicy mogą dodawać nowe wiersze do ListObject kontroli, która jest związana z danymi.Przed zatwierdzeniem zmian w źródle danych, można sprawdzić poprawność danych użytkownika.
Dotyczy: Informacje przedstawione w tym temacie dotyczą projektów na poziomie dokumentu i projektów na poziomie aplikacji dla programów Excel 2013 i Excel 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacji pakietu Office i typ projektu.
Sprawdzanie poprawności danych
Gdy dodawany jest wiersz do ListObject , jest związana z danymi, BeforeAddDataBoundRow zdarzenie jest wywoływane.Może obsłużyć tego zdarzenia do poprawności danych.Na przykład jeśli aplikacja wymaga, że tylko pracownicy w wieku 18 i 65 mogą być dodawane do źródła danych, można sprawdzić że wiek wpisuje przypada w tym zakresie przed dodaniem wiersza.
[!UWAGA]
Należy zawsze sprawdzić dane wejściowe użytkownika na serwerze, oprócz klienta.Aby uzyskać więcej informacji, zobacz Creating Secure User Interfaces.
Do sprawdzania poprawności danych, gdy nowy wiersz jest dodawany do obiektu ListObject powiązane z danymi
Tworzenie zmiennych dla Identyfikatora i DataTable na poziomie klasy.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
Utwórz nowy DataTable i dodać kolumny próbki i dane w Startup obsługi zdarzeń z Sheet1 klasy (w projekcie poziomie dokumentu) lub ThisAddIn klasy (w projekcie poziomie aplikacji).
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);
Dodawanie kodu do list1_BeforeAddDataBoundRow obsługi zdarzeń, aby sprawdzić, czy wiek wpisuje mieści się w dopuszczalnym zakresie.
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; } }
Kompilowanie kodu
W tym przykładzie kodu założono, że istniejące ListObject o nazwie list1 w arkuszu, w którym pojawia się ten kod.
Zobacz też
Zadania
Jak: mapowanie kolumn ListObject do danych
Koncepcje
Dodawanie formantów do dokumentów pakietu Office w czasie wykonywania
Automatyzowanie programu Excel przy użyciu obiektów rozszerzony