Partilhar via


Como: Identificador de erros 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.Às vezes, a relação entre o objeto de lista para a Origem de dados causa erros de rotina.Por exemplo, você pode mapear quais colunas que deseja Aparecerr no ListObject, portanto, se você omitir colunas que tenham restrições, como um campo que não pode aceitar nulo valores, erros são gerados sempre que uma linha é criada.Você pode Gravar código para adicionar os valores ausentes em um manipulador de eventos para o evento ErrorAddDataBoundRow.

Para manipular erros que ocorrem quando um dados ligados a linha é Adicionado

  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.ErrorAddDataBoundRow += new Microsoft.Office.Tools.Excel.
        ErrorAddDataBoundRowEventHandler(list1_ErrorAddDataBoundRow);
    
  3. Do evento manipulador para o evento de ErrorAddDataBoundRow, adicionar o Avançar número de identificação incrementado ao campo ID e adiciona uma linha novamente.

    Private Sub list1_ErrorAddDataBoundRow(ByVal sender As Object, ByVal e As  _
        Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs) _
        Handles list1.ErrorAddDataBoundRow
    
        Dim row As System.Data.DataRow = (CType(e.Item, System.Data.DataRowView)).Row
    
        If TypeOf (e.InnerException) Is NoNullAllowedException Then
            row("Id") = id
            id += 1
            e.Retry = True
        End If
    End Sub
    
    private void list1_ErrorAddDataBoundRow(object sender,
        Microsoft.Office.Tools.Excel.ErrorAddDataBoundRowEventArgs e)
    {
        System.Data.DataRow row = ((System.Data.DataRowView)e.Item).Row;
    
        if (e.InnerException is NoNullAllowedException)
        {
            row["Id"]= id;
            id++;
            e.Retry = true;
        }
    }
    

Compilando o código

  • Este exemplo de código assume que um existente ListObject chamado list1 na planilha em que esse código aparece.

Consulte também

Tarefas

Como: Mapear ListObject colunas para dados

Como: Validar dados 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.