Como: validar dados quando uma nova linha é adicionada a um controle de ListObject
Os usuários podem adicionar novas linhas a um controle de ListObject associado a dados.Você pode validar os dados do usuário antes de confirmar as alterações na fonte de dados.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2013 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
Validação de Dados
Sempre que uma linha é adicionada a ListObject que é associada a dados, o evento de BeforeAddDataBoundRow é gerado.Você pode manipular esse evento para executar a validação de dados.Por exemplo, se seu aplicativo requer que apenas os funcionários entre idades de 18 e 65 podem ser adicionados à fonte de dados, você pode verificar que a idade inserida em este esse intervalo antes da linha será adicionada.
Observação |
---|
Você sempre deve verificar a entrada do usuário no servidor além do cliente.Para obter mais informações, consulte Creating Secure User Interfaces. |
Para validar dados quando uma nova linha é adicionada a ListObject associado a dados
Criar variáveis para a identificação e DataTable a nível de classe.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
Crie uma nova DataTable e adicionar colunas e dados de exemplo no manipulador de eventos de Startup da classe de Sheet1 (em um projeto de um documento) ou nível de classe de ThisAddIn (em um projeto de nível.)
employeeTable = New System.Data.DataTable("Employees") Dim column As System.Data.DataColumn = _ employeeTable.Columns.Add("Id", GetType(Int32)) column.AllowDBNull = False employeeTable.Columns.Add("FirstName", GetType(String)) employeeTable.Columns.Add("LastName", GetType(String)) employeeTable.Columns.Add("Age", GetType(Int32)) employeeTable.Rows.Add(id, "Nancy", "Anderson", 56) employeeTable.Rows.Add(id, "Robert", "Brown", 44) id += 1 list1.SetDataBinding(employeeTable, "", "FirstName", "LastName", "Age")
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 manipulador de eventos de list1_BeforeAddDataBoundRow para verificar se a idade este inserida no intervalo aceitável.
Private Sub list1_BeforeAddDataBoundRow(ByVal sender As Object, ByVal e As _ Microsoft.Office.Tools.Excel.BeforeAddDataBoundRowEventArgs) _ Handles list1.BeforeAddDataBoundRow Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row If Not row("Age") Is Nothing And Not row("Age") Is Convert.DBNull Then Dim ageEntered As Integer = CType(row("Age"), Int32) If ageEntered < 21 Or ageEntered > 65 Then System.Windows.Forms.MessageBox.Show _ ("Age must be between 21 and 65. The row cannot be added.") e.Cancel = True Return End If row("ID") = id id += 1 Else System.Windows.Forms.MessageBox.Show("You must enter an age.") e.Cancel = True End If End Sub
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; } }
Compilando o código
Este exemplo de código a seguir pressupõe que você tem ListObject existente chamado list1 na planilha em que esse código aparece.
Consulte também
Tarefas
Como: mapear ListObject colunas para dados
Conceitos
Adicionar controles a documentos do Office em tempo de execução
Automatizar o Excel usando o Extended objetos