Sdílet prostřednictvím


Jak: ověření dat při přidání nového řádku na ovládací prvek objektu ListObject

Uživatelé mohou přidávat nové řádky ListObject ovládací prvek vázaný na data.Před provedením změn do zdroje dat, můžete ověřit data uživatele.

Platí pro: Informace v tomto tématu se vztahují na projekty na úrovni dokumentu i na úrovni aplikace v aplikacích Excel 2013 a Excel 2010. Další informace naleznete v tématu Funkce aplikace Office a typ projektu.

Ověření dat

Kdykoli přidat řádek do ListObject , je vázán na data, BeforeAddDataBoundRow je vyvolána událost.Tato událost k ověřování dat, můžete zpracovat.Například pokud aplikace vyžaduje pouze zaměstnanci ve věku od 18 do 65, které mohou být přidány do zdroje dat, můžete ověřit, že stáří zadali spadá do rozsahu přidat řádek.

[!POZNÁMKA]

Je vhodné vždy zkontrolovat vstupu uživatele na serveru s klientem.Další informace naleznete v tématu Creating Secure User Interfaces.

Pro ověření dat při nový řádek je přidán do objektu ListObject s vazbou na data

  1. Vytvoření proměnné pro ID a DataTable na úrovni třídy.

    Dim id As Integer = 0
    Dim employeeTable As System.Data.DataTable
    
    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Vytvořit novou DataTable a přidat vzorek sloupce a data Startup obslužné rutiny Sheet1 třídy (v úrovni dokumentů projektu) nebo ThisAddIn třídy (v projektu úroveň aplikace).

    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);
    
  3. Přidejte kód list1_BeforeAddDataBoundRow zkontrolujte, zda stáří zadali leží v přijatelném rozsahu obslužnou rutinu události.

    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;
        }
    }
    

Probíhá kompilace kódu

Tento příklad kódu předpokládá, že máte existující ListObject s názvem list1 na listu, zobrazí se tento kód.

Viz také

Úkoly

Jak: mapovat na Data objektu ListObject sloupce

Koncepty

Rozšíření dokumenty aplikace Word a Excel v doplňky úroveň aplikace v době spuštění

Přidání ovládacích prvků do dokumentů sady Office v době spuštění

Ovládací prvek objektu ListObject

Automatizace aplikace Excel pomocí rozšířené objekty

Další zdroje

Ovládací prvky v dokumentech sady Office