Partilhar via


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

  1. Crie variáveis para o ID e DataTable no nível da classe.

    private int id = 0;
    private System.Data.DataTable employeeTable;
    
  2. 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) ou ThisAddIn classe (em um projeto de Sheet1 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);
    
  3. 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.