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
Vytvořte proměnné pro ID a DataTable na úrovni třídy.
Vytvořte nový DataTable a přidejte ukázkové sloupce a data do
Startup
obslužné rutinySheet1
události třídy (v projektu na úrovni dokumentu) neboThisAddIn
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);
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í.