Sdílet prostřednictvím


Postupy: Ověření dat při přidání nového řádku do ovládacího prvku 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 Excelu 2013 a v Excelu 2010. Další informace najdete v tématu Dostupné funkce podle aplikací systému 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 Secure Client Applications.

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

Postupy: Mapování sloupců objektu ListObject na data

Koncepty

Rozšíření dokumentů aplikace Word a sešitů aplikace Excel v doplňcích na úrovni aplikace za běhu

Přidání ovládacích prvků do dokumentů Office za běhu

ListObject – ovládací prvek

Automatizace v aplikaci Excel s použitím rozšířených objektů

Další zdroje

Ovládací prvky v dokumentech Office