Validar datos cuando se agrega una nueva fila a un control ListObject
Los usuarios pueden agregar filas nuevas a un control ListObject enlazado a datos. Puede validar los datos del usuario antes de confirmar los cambios al origen de datos.
Se aplica a: La información de este tema se aplica a proyectos de nivel de documento y proyectos de complementos de VSTO para Excel. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.
Validación de datos
Cada vez que se agrega una fila a un ListObject que está enlazado a datos, se produce el evento BeforeAddDataBoundRow . Puede controlar este evento para realizar la validación de datos. Por ejemplo, si la aplicación requiere que solo los empleados entre los 18 y los 65 años de edad se puedan agregar al origen de datos, compruebe que la edad especificada se encuentra dentro de ese intervalo antes de agregar la fila.
Nota:
Debe comprobar siempre las entradas de los usuarios en el servidor, además del cliente. Para obtener más información, consulte Protección de aplicaciones cliente.
Para validar datos cuando se agrega una fila nueva a un control ListObject enlazado a datos
Cree variables para el identificador y DataTable en el nivel de clase.
Cree una nueva DataTable y agregue columnas y datos de ejemplo en el
Startup
controlador de eventos de laSheet1
clase (en un proyecto de nivel de documento) oThisAddIn
clase (en un proyecto de complemento de 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);
Agregue código al controlador de eventos
list1_BeforeAddDataBoundRow
para comprobar si la edad escrita está dentro del intervalo aceptable.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; } }
Compilar el código
Este ejemplo de código supone que dispone de un ListObject existente denominado list1
en la hoja de cálculo en la que aparece este código.