Compartilhar via


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

  • O Excel 2007

  • O Excel 2003

Projetos de nível de aplicativo

  • O Excel 2007

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

  1. 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;
    
  2. 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);
    
  3. 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

Estendendo os documentos do Word e Excel pastas de trabalho no nível de aplicativo Adicionar-ins em tempo de execução

Desenvolvimento de Adicionar-in de aplicativo-nível do Excel

Adicionar controles a documentos do Office em tempo de execução

Controlarar de ListObject

Noções básicas sobre ListObject coluna e linha de ordem de persistência

Outros recursos

Controles em documentos do Office

Controles de host do Excel

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.