在向 ListObject 控件添加新行时验证数据
用户可以向绑定到数据的 ListObject 控件添加新行。 可以在将更改提交到数据源之前验证用户数据。
适用于: 本主题中的信息适用于 Excel 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。
数据验证
每当向绑定到数据的 ListObject 添加行时,便会引发 BeforeAddDataBoundRow 事件。 可以处理此事件以执行数据验证。 例如,如果应用程序要求仅将 18 至 65 岁的员工添加到数据源,请验证输入的年龄是否在添加行之前属于该范围。
注意
除了在客户端上,还应始终在服务器上检查用户输入。 有关详细信息,请参阅 安全客户端应用程序。
在向数据绑定 ListObject 添加新行时验证数据
在类级别为 ID 和 DataTable 创建变量。
在类的
Sheet1
事件处理程序(在文档级项目中)或ThisAddIn
类(在 VSTO 外接程序项目中)中创建新的DataTable和添加示例列和数据Startup
。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);
向
list1_BeforeAddDataBoundRow
事件处理程序添加代码以检查输入的年龄是否处于可接受的范围内。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; } }
编译代码
此代码示例假定在此代码出现的工作表中有一个名为 ListObject 的现有 list1
。