Partilhar via


Como: Vincular o controle DataGrid do Windows Forms a uma fonte de dados

Observação

O controle DataGridView substitui e adiciona funcionalidade ao controle DataGrid; no entanto, o controle DataGrid é mantido para compatibilidade com versões anteriores e uso futuro, se você escolher. Para obter mais informações, consulte Diferenças entre os controles DataGridView e DataGrid do Windows Forms.

O controle DataGrid Windows Forms foi projetado especificamente para exibir informações de uma fonte de dados. Você vincula o controle em tempo de execução chamando o método SetDataBinding. Embora você possa exibir dados de uma variedade de fontes de dados, as fontes mais típicas são conjuntos de dados e exibições de dados.

Para vincular dados ao controle DataGrid programaticamente

  1. Escreva o código para preencher o conjunto de dados.

    Se a fonte de dados for um conjunto de dados ou uma exibição de dados baseada em uma tabela de conjunto de dados, adicione código ao formulário para preencher o conjunto de dados.

    O código exato que você usa depende de onde o conjunto de dados está obtendo dados. Se o conjunto de dados estiver sendo preenchido diretamente de um banco de dados, você normalmente chamará o método Fill de um adaptador de dados, como no exemplo a seguir, que preenche um conjunto de dados chamado DsCategories1:

    sqlDataAdapter1.Fill(DsCategories1)
    
    sqlDataAdapter1.Fill(DsCategories1);
    
    sqlDataAdapter1->Fill(dsCategories1);
    

    Se o conjunto de dados estiver sendo preenchido a partir de um XML Web Service, você normalmente cria uma instância do serviço em seu código e, em seguida, chama um de seus métodos para retornar um conjunto de dados. Em seguida, você mescla o conjunto de dados do XML Web Service em seu conjunto de dados local. O exemplo a seguir mostra como você pode criar uma instância de um XML Web Services chamado CategoriesService, chamar seu método GetCategories e mesclar o conjunto de dados resultante em um conjunto de dados local chamado DsCategories1:

    Dim ws As New MyProject.localhost.CategoriesService()
    ws.Credentials = System.Net.CredentialCache.DefaultCredentials
    DsCategories1.Merge(ws.GetCategories())
    
    MyProject.localhost.CategoriesService ws = new MyProject.localhost.CategoriesService();
    ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
    DsCategories1.Merge(ws.GetCategories());
    
    MyProject::localhost::CategoriesService^ ws =
       new MyProject::localhost::CategoriesService();
    ws->Credentials = System::Net::CredentialCache::DefaultCredentials;
    dsCategories1->Merge(ws->GetCategories());
    
  2. Chame o método DataGrid do controle SetDataBinding, passando-lhe a fonte de dados e um membro de dados. Se não precisa passar explicitamente um elemento de dados, passe uma cadeia de caracteres vazia.

    Observação

    Se você estiver vinculando a grade pela primeira vez, poderá definir as propriedades DataSource e DataMember do controle. No entanto, não é possível redefinir essas propriedades depois que elas forem definidas. Portanto, é recomendável que você sempre use o método SetDataBinding.

    O exemplo a seguir mostra como você pode vincular programaticamente à tabela Customers em um conjunto de dados chamado DsCustomers1:

    DataGrid1.SetDataBinding(DsCustomers1, "Customers")
    
    DataGrid1.SetDataBinding(DsCustomers1, "Customers");
    
    dataGrid1->SetDataBinding(dsCustomers1, "Customers");
    

    Se a tabela Customers for a única tabela no conjunto de dados, você poderá, alternativamente, vincular a grade desta maneira:

    DataGrid1.SetDataBinding(DsCustomers1, "")
    
    DataGrid1.SetDataBinding(DsCustomers1, "");
    
    dataGrid1->SetDataBinding(dsCustomers1, "");
    
  3. (Opcional) Adicione os estilos de tabela e de coluna apropriados à grelha. Se não houver estilos de tabela, você verá a tabela, mas com formatação mínima e com todas as colunas visíveis.

Ver também