Sdílet prostřednictvím


Ověření dat při přidání nového řádku do ovládacího prvku ListObject

Uživatelé mohou přidat nové řádky do ListObject ovládacího prvku, který je svázán s daty. Před potvrzením změn ve zdroji dat můžete ověřit data uživatele.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu a projekty doplňků VSTO pro Excel. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

Ověření dat

Při každém přidání řádku k ListObject datům je BeforeAddDataBoundRow vyvolána událost. Tuto událost můžete zpracovat za účelem ověření dat. Pokud vaše aplikace například vyžaduje, aby do zdroje dat bylo možné přidat pouze zaměstnance ve věku od 18 do 65 let, ověřte, že zadaný věk spadá do tohoto rozsahu před přidáním řádku.

Poznámka:

Kromě klienta byste měli vždy zkontrolovat vstup uživatele na serveru. Další informace naleznete v tématu Zabezpečení klientských aplikací.

Ověření dat při přidání nového řádku do objektu ListObject vázaného na data

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

    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. Vytvořte nový DataTable a přidejte ukázkové sloupce a data do Startup obslužné rutiny Sheet1 události třídy (v projektu na úrovni dokumentu) nebo ThisAddIn třídy (v projektu doplňku 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. Přidejte kód do list1_BeforeAddDataBoundRow obslužné rutiny události, abyste zkontrolovali, jestli zadaný věk spadá do přijatelného rozsahu.

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

Kompilace kódu

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