Validar dados quando uma nova linha é adicionada a um controle ListObject
Os usuários podem adicionar novas linhas a um ListObject controle vinculado a dados. Você pode validar os dados do usuário antes de confirmar as alterações na fonte de dados.
Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Excel. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.
Validação de dados
Sempre que uma linha é adicionada a um ListObject que está vinculado a dados, o BeforeAddDataBoundRow evento é gerado. Você pode manipular esse evento para executar sua validação de dados. Por exemplo, se seu aplicativo exigir que apenas funcionários com idades entre 18 e 65 anos possam ser adicionados à fonte de dados, verifique se a idade inserida está dentro desse intervalo antes que a linha seja adicionada.
Observação
Você deve sempre verificar a entrada do usuário no servidor, além do cliente. Para obter mais informações, consulte Proteger aplicativos cliente.
Para validar dados quando uma nova linha é adicionada a ListObject vinculado a dados
Crie variáveis para o ID e DataTable no nível da classe.
Crie um novo DataTable e adicione colunas de exemplo e dados no
Startup
manipulador de eventos da classe (em um projeto de nível de documento) ouThisAddIn
classe (em um projeto deSheet1
suplemento 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);
Adicione código ao
list1_BeforeAddDataBoundRow
manipulador de eventos para verificar se a idade inserida está dentro do intervalo aceitável.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 o código
Este exemplo de código pressupõe que você tenha um nome list1
existente ListObject na planilha na qual esse código aparece.
Conteúdo relacionado
- Estender documentos do Word e pastas de trabalho do Excel em suplementos do VSTO em tempo de execução
- Controlos de documentos do Office
- Adicionar controles a documentos do Office em tempo de execução
- ListObject controle
- Automatizar o Excel usando objetos estendidos
- Como: mapear colunas ListObject para dados