Udostępnij za pośrednictwem


Weryfikowanie danych po dodaniu nowego wiersza do kontrolki ListObject

Użytkownicy mogą dodawać nowe wiersze do kontrolki powiązanej ListObject z danymi. Przed zatwierdzeniem zmian w źródle danych możesz zweryfikować dane użytkownika.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Excel. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Sprawdzanie poprawności danych

Za każdym razem, gdy wiersz jest dodawany do elementu powiązanego ListObject z danymi, BeforeAddDataBoundRow zdarzenie jest zgłaszane. To zdarzenie można obsłużyć w celu przeprowadzenia weryfikacji danych. Jeśli na przykład aplikacja wymaga dodania do źródła danych tylko pracowników w wieku od 18 do 65 lat, sprawdź, czy wprowadzony wiek mieści się w tym zakresie przed dodaniu wiersza.

Uwaga

Należy zawsze sprawdzać dane wejściowe użytkownika na serwerze oprócz klienta. Aby uzyskać więcej informacji, zobacz Zabezpieczanie aplikacji klienckich.

Aby zweryfikować dane po dodaniu nowego wiersza do obiektu ListObject powiązanego z danymi

  1. Utwórz zmienne dla identyfikatora i DataTable na poziomie klasy.

    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Utwórz nowe DataTable i dodaj przykładowe kolumny i dane w Startup procedurze obsługi Sheet1 zdarzeń klasy (w projekcie na poziomie dokumentu) lub ThisAddIn klasie (w projekcie dodatku 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);
    
  3. Dodaj kod do list1_BeforeAddDataBoundRow programu obsługi zdarzeń, aby sprawdzić, czy wprowadzony wiek mieści się w dopuszczalnym zakresie.

    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 przyjęto założenie, że masz istniejącą ListObject nazwę list1 w arkuszu, w którym pojawia się ten kod.