Como: Validar dados quando uma Novo linha é Adicionado a um Controlarar de ListObject
Se aplica a |
---|
As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office. Projetos de nível de documento
Projetos de nível de aplicativo
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Os usuários podem adicionar Novo linhas a um Controlarar ListObject que está Ligado a dados.Você pode validar os dados do usuário antes de confirmar as alterações para a Origem de dados.
Se ocorrer um erro, você pode Gravar código para fornecer dados adicionais para corrigir o erro.For more information, see Como: Identificador de erros quando uma Novo linha é Adicionado a um Controlarar de ListObject.
Validação de Dados
Sempre que uma linha é Adicionado a um ListObject está Ligado a dados, o evento de BeforeAddDataBoundRow é disparado.Você pode manipular esse evento para executar a validação de dados.Por exemplo, se seu aplicativo requer que apenas os funcionários entre as idades de 18 e 65 podem ser adicionados a Origem de dados, você pode verificar que a duração inserida cair dentro desse intervalo antes da linha é adicionada.
Observação: |
---|
Você sempre deve Marcar entrada do usuário no servidor em adição para o cliente.Para obter mais informações, consulte Criando Seguro as interfaces de usuário. |
Para validar dados quando uma Novo linha é Adicionado ao ListObject ligados a dados
Criar variáveis para a identificação e DataTable no nível de classe.
Dim id As Integer = 0 Dim employeeTable As System.Data.DataTable
private int id = 0; private System.Data.DataTable employeeTable;
Criar um novo DataTable e adicionar colunas de exemplo e os dados no manipulador de eventos Startup da classe Sheet1 (em um projeto de nível de documento) ou classe de ThisAddIn (em um projeto de nível de aplicativo).
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);
Adicionar código ao manipulador de eventos list1_BeforeAddDataBoundRow para Marcar se a duração inserida ocorre dentro do 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 pressupõe que você tenha um existente ListObject chamado list1 na planilha em que esse código aparece.
Consulte também
Tarefas
Como: Mapear ListObject colunas para dados
Como: Identificador de erros quando uma Novo linha é Adicionado a um Controlarar de ListObject
Conceitos
Desenvolvimento de Adicionar-in de aplicativo-nível do Excel
Adicionar controles a documentos do Office em tempo de execução
Noções básicas sobre ListObject coluna e linha de ordem de persistência
Outros recursos
Controles em documentos do Office
Date |
History |
Motivo |
---|---|---|
De 2008 de julho |
Modificado o exemplo de forma que ele pode ser usado em um aplicativo-nível Adicionar - in. |
Alteração de recurso do SP1. |