Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 Windows Forms DataGrid exibe dados em uma série de linhas e colunas. O caso mais simples é quando a grade está vinculada a uma fonte de dados com uma única tabela que não contém relações. Nesse caso, os dados aparecem em linhas e colunas simples, como em uma planilha. Para obter mais informações sobre como vincular dados a outros controles, consulte vinculação de dados e Windows Forms.
Se o DataGrid estiver vinculado a dados com várias tabelas relacionadas e se a navegação estiver habilitada na grade, a grade exibirá expansores em cada linha. Com um expansor, o utilizador pode passar de uma tabela mãe para uma tabela filha. Clique num nó para exibir a tabela filha, e clique num botão voltar para exibir a tabela pai original. Desta forma, a grelha exibe as relações hierárquicas entre tabelas.
A captura de tela a seguir mostra um DataGrid vinculado a dados com várias tabelas:
O DataGrid pode fornecer uma interface de usuário para um conjunto de dados, navegação entre tabelas relacionadas e recursos avançados de formatação e edição.
A exibição e a manipulação de dados são funções separadas: o controle manipula a interface do usuário, enquanto as atualizações de dados são tratadas pela arquitetura de vinculação de dados do Windows Forms e pelos provedores de dados do .NET Framework. Portanto, vários controles vinculados à mesma fonte de dados permanecerão sincronizados.
Observação
Se você estiver familiarizado com o controle DataGrid no Visual Basic 6.0, você encontrará algumas diferenças significativas no controle DataGrid Windows Forms.
Quando a grade é vinculada a um DataSet, as colunas e linhas são criadas, formatadas e preenchidas automaticamente. Para obter mais informações, consulte Vinculação de Dados e Windows Forms. Após a geração do controle DataGrid, você pode adicionar, excluir, reorganizar e formatar colunas e linhas, dependendo de suas necessidades.
Vinculando dados ao controle
Para que o controle DataGrid funcione, ele deve ser vinculado a uma fonte de dados usando as propriedades DataSource e DataMember em tempo de design ou o método SetDataBinding em tempo de execução. Essa associação aponta o DataGrid para um objeto de fonte de dados instanciado, como um DataSet ou DataTable). O controle DataGrid mostra os resultados das ações que são executadas nos dados. A maioria das ações específicas de dados não é executada por meio do DataGrid , mas sim por meio da fonte de dados.
Se os dados no conjunto de dados acoplado forem atualizados por meio de qualquer mecanismo, o controle DataGrid refletirá as alterações. Se a grade de dados e seus estilos de tabela e estilo de coluna tiverem a propriedade ReadOnly definida como false, os dados no conjunto de dados poderão ser atualizados por meio do controle DataGrid.
Apenas uma tabela pode ser mostrada no DataGrid de cada vez. Se uma relação pai-filho for definida entre tabelas, o usuário poderá mover-se entre as tabelas relacionadas para selecionar a tabela a ser exibida no controle DataGrid. Para obter informações sobre como vincular um controle DataGrid a uma fonte de dados ADO.NET em tempo de design ou de execução, consulte Como vincular o controle DataGrid do Windows Forms a uma fonte de dados.
As fontes de dados válidas para o DataGrid incluem:
DataTable classe
DataView classe
DataSet classe
DataViewManager classe
Se sua origem for um conjunto de dados, o conjunto de dados pode ser um objeto no formulário ou um objeto passado para o formulário por um XML Web Service. Você pode vincular a conjuntos de dados digitados ou não tipados.
Você também pode vincular um controlo DataGrid a estruturas adicionais se os objetos na estrutura, como os elementos numa matriz, exporem propriedades públicas. A grelha exibirá todas as propriedades públicas dos elementos na estrutura. Por exemplo, se você vincular o controle DataGrid a uma matriz de objetos de cliente, a grade exibirá todas as propriedades públicas desses objetos de cliente. Em alguns casos, isso significa que, embora você possa se vincular à estrutura, a estrutura vinculada resultante pode não ter aplicação prática. Por exemplo, você pode vincular a uma matriz de inteiros, mas como o tipo de dados Integer não oferece suporte a uma propriedade pública, a grade não pode exibir dados.
Você pode vincular às seguintes estruturas se seus elementos exporem propriedades públicas:
Qualquer componente que implemente a interface IList. Isso inclui matrizes de dimensão única.
Qualquer componente que implemente a interface IListSource.
Qualquer componente que implemente a interface IBindingList.
Para obter mais informações sobre possíveis fontes de dados, consulte Fontes de dados suportadas pelo Windows Forms.
Exibição de grade
Um uso comum do controle DataGrid é exibir uma única tabela de dados de um conjunto de dados. No entanto, o controle também pode ser usado para exibir várias tabelas, incluindo tabelas relacionadas. A exibição da grade é ajustada automaticamente de acordo com a fonte de dados. A tabela a seguir mostra o que é exibido para várias configurações.
| Conteúdo do conjunto de dados | O que é exibido |
|---|---|
| Mesa única. | A tabela é exibida numa grelha. |
| Várias tabelas. | A grade pode exibir uma vista de árvore que os utilizadores podem navegar e localizar a tabela que desejam exibir. |
| Várias tabelas relacionadas. | A grelha pode exibir uma vista em árvore para selecionar tabelas ou pode especificar-se que a grelha exiba a tabela-mãe. Os registros na tabela pai permitem que os usuários naveguem para linhas filhas relacionadas. |
Observação
As tabelas em um conjunto de dados são relacionadas usando um DataRelation. Consulte também Criar relações entre conjuntos de dados.
Quando o controlador DataGrid está a exibir uma tabela e a propriedade AllowSorting é definida como true, os dados podem ser reordenados ao clicar nos cabeçalhos das colunas. O usuário também pode adicionar linhas e editar células.
As relações entre um conjunto de tabelas são exibidas aos usuários usando uma estrutura pai/filho de navegação. As tabelas pai representam o nível mais alto de dados, enquanto as tabelas filhas são aquelas que são derivadas das listagens individuais presentes nas tabelas pai. Os expansores são exibidos em cada linha pai que contém uma tabela filho. Clicar num expansor gera uma lista de links semelhantes aos da Web para as tabelas filhas. Quando o utilizador seleciona um link, a tabela filha é exibida. Clicar no ícone mostrar/ocultar linhas pai (
) ocultará as informações sobre a tabela pai ou fará com que ela reapareça se o usuário a tiver ocultado anteriormente. O usuário pode clicar em um botão Voltar para voltar para a tabela visualizada anteriormente.
Colunas e linhas
O DataGrid consiste em uma coleção de objetos DataGridTableStyle contidos na propriedade DataGrid do controle TableStyles. Um estilo de tabela pode conter uma coleção de objetos DataGridColumnStyle contidos na propriedade GridColumnStyles do DataGridTableStyle.. Você pode editar as propriedades
Qualquer DataGridTableStyle associado ao controlo DataGrid pode ser acessado através do GridTableStylesCollection. O GridTableStylesCollection pode ser editado no designer com o editor de coleção DataGridTableStyle ou programaticamente através da propriedade DataGrid do controle TableStyles.
A ilustração a seguir mostra os objetos incluídos no controle DataGrid:
Estilos de tabela e estilos de coluna são sincronizados com objetos DataTable e objetos DataColumn definindo suas propriedades MappingName para as propriedades TableName e ColumnName apropriadas. Quando um DataGridTableStyle que não tem estilos de coluna é adicionado a um controle DataGrid vinculado a uma fonte de dados válida e a propriedade MappingName desse estilo de tabela é definida como uma propriedade TableName válida, uma coleção de objetos DataGridColumnStyle é criada para esse estilo de tabela. Para cada DataColumn encontrado na coleção Columns do DataTable, um DataGridColumnStyle correspondente é adicionado ao GridColumnStylesCollection.
GridColumnStylesCollection é acessado através da propriedade GridColumnStyles do DataGridTableStyle. As colunas podem ser adicionadas ou excluídas da grade usando o método Add ou Remove no GridColumnStylesCollection. Para obter mais informações, consulte Como adicionar tabelas e colunas ao controle DataGrid do Windows Forms e Como excluir ou ocultar colunas no controle DataGrid do Windows Forms.
Uma coleção de tipos de coluna estende a classe DataGridColumnStyle com recursos avançados de formatação e edição. Todos os tipos de coluna herdam da classe base DataGridColumnStyle. A classe que é criada depende da propriedade DataType do DataColumn do qual o DataGridColumn é baseado. Por exemplo, um DataColumn que tenha sua propriedade DataType definida como Boolean será associado ao DataGridBoolColumn. A tabela a seguir descreve cada um desses tipos de coluna.
| Tipo de coluna | Descrição |
|---|---|
| DataGridTextBoxColumn | Aceita e exibe dados como cadeias de caracteres formatadas ou não formatadas. Os recursos de edição são os mesmos que para editar dados em uma TextBoxsimples. Herda de DataGridColumnStyle. |
| DataGridBoolColumn | Aceita e exibe valores true, falsee null. Herda de DataGridColumnStyle. |
Clicar duas vezes na borda direita de uma coluna redimensiona a coluna para exibir sua legenda completa e entrada mais ampla.
Estilos de tabela e estilos de coluna
Assim que tiver estabelecido o formato padrão do controle DataGrid, você poderá personalizar as cores que serão usadas quando determinadas tabelas forem exibidas na grade de dados.
Isso é conseguido através da criação de instâncias da classe DataGridTableStyle. Os estilos de tabela especificam a formatação de tabelas específicas, distinta da formatação padrão do próprio controle DataGrid. Cada tabela pode ter apenas um estilo de tabela definido para ela de cada vez.
Às vezes, você desejará que uma coluna específica tenha uma aparência diferente do resto das colunas de uma determinada tabela de dados. Você pode criar um conjunto personalizado de estilos de coluna usando a propriedade GridColumnStyles.
Os estilos de coluna estão relacionados a colunas em um conjunto de dados, assim como os estilos de tabela estão relacionados a tabelas de dados. Assim como cada tabela pode ter apenas um estilo de tabela definido para ela de cada vez, também cada coluna pode ter apenas um estilo de coluna definido para ela, em um estilo de tabela específico. Essa relação é definida na propriedade MappingName da coluna.
Se você tiver criado um estilo de tabela sem estilos de coluna adicionados a ele, o Visual Studio adicionará estilos de coluna padrão quando o formulário e a grade forem criados em tempo de execução. No entanto, se você criou um estilo de tabela e adicionou estilos de coluna a ele, o Visual Studio não criará nenhum estilo de coluna. Além disso, você precisará definir estilos de coluna e atribuí-los com o nome do mapeamento para que as colunas desejadas apareçam na grade.
Como você especifica quais colunas são incluídas na grade de dados atribuindo-lhes um estilo de coluna e nenhum estilo de coluna foi atribuído às colunas, você pode incluir colunas de dados no conjunto de dados que não são exibidas na grade. No entanto, como a coluna de dados está incluída no conjunto de dados, você pode editar programaticamente os dados que não são exibidos.
Observação
Em geral, crie estilos de coluna e adicione-os à coleção de estilos de coluna antes de adicionar estilos de tabela à coleção de estilos de tabela. Quando você adiciona um estilo de tabela vazio à coleção, os estilos de coluna são gerados automaticamente para você. Consequentemente, ocorrerá uma exceção se tentares adicionar novos estilos de coluna com valores duplicados de MappingName à coleção de estilos de coluna.
Às vezes, você vai querer apenas ajustar uma coluna entre muitas colunas; Por exemplo, o conjunto de dados contém 50 colunas e você deseja apenas 49 delas. Nesse caso, é mais fácil importar todas as 50 colunas e remover uma programaticamente, em vez de adicionar programaticamente cada uma das 49 colunas individuais desejadas.
Formatação
A formatação que pode ser aplicada ao controle DataGrid inclui estilos de borda, estilos de linha de grade, fontes, propriedades de legenda, alinhamento de dados e cores de plano de fundo alternadas entre linhas. Para obter mais informações, consulte Como formatar o controle DataGrid do Windows Forms.
Eventos
Além dos eventos de controle comuns, como MouseDown, Entere Scroll, o controle DataGrid suporta eventos associados à edição e navegação dentro da grade. A propriedade CurrentCell determina qual célula está selecionada. O evento CurrentCellChanged é gerado quando o usuário navega para uma nova célula. Quando o usuário navega para uma nova tabela por meio de relações pai/filho, o evento Navigate é gerado. O evento BackButtonClick é acionado quando o utilizador clica no botão Voltar enquanto está a visualizar uma tabela filha, e o evento ShowParentDetailsButtonClick é acionado quando o ícone para mostrar/ocultar as linhas pai é clicado.
Ver também
.NET Desktop feedback