Você está na página 1de 2

Introduo Numa aplicao que estava a desenvolver para o trabalho precisava de incluir checkboxes dentro de clulas numa datagrid.

Procurei bastante... acho que nunca tinha usado o google de uma forma to intensiva. No entanto, tudo o que encontrei estava pouco comentado e no muito explcito. Para datagrid web no falta informao, mas no era essa a datagrid que eu queria usar, por isso no podia tirar partido do ItemTemplate. Depois de muitas tentativas e erros consegui fazer com que funcionasse atravs do uso de DataGridTableStyle, que ptimo para a customizao de uma DataGrid. Na imagem em baixo podem ver o resultado (como experincia) e das potencialidades da DataGrid quando ligada a uma base de dados.

O que tm de fazer para testar o cdigo simplesmente copi-lo desta pgina e colar no Event Load de um form. Inserem uma datagrid no form e do-lhe o nome de "datagrid" ;) e vo ver que funciona s mil maravilhas ;) Cdigo

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _ MyBase.Load Dim tb1 As New DataTable("tabela") '| Dimensionar a tabela. importante definir o '------------------------------------| nome da tabela, porque vamos ter de o usar '------------------------------------| para aplicar um estilo nessa mesma tabela. Dim col1 As New DataColumn Neste caso Dim col2 As New DataColumn '| Dimensionar as colunas que vamos ter. '| so s duas, mas pode ter mais. Definir o tipo de contedo para esta Neste caso System.String, porque colocar l um nome. Podiamos tb l uma data (ex.: System.DateTime)

col1.DataType = _ System.Type.GetType("System.String") '| coluna '-------------------------------------| vamos '-------------------------------------| colocar '-------------------------------------| col1.ColumnName = "nome" '| usar '------------------------------------| tarde, '------------------------------------| col1.Caption = "Nome" '| col1.ReadOnly = True tb1.Columns.Add(col1) '| col2.DataType = _

O nome da coluna tb importante. Vamos esse nome para "mapear" a coluna mais ou seja, aplicar-lhe um estilo. Se no quiserem que se altere o campo. Finalmente adiciona-se a coluna.

System.Type.GetType("System.Boolean") '| Esta coluna especial, pq para ser possvel '......................................| apresentar a checkbox correctamente, preciso '......................................| atribuir o tipo System.Boolean. col2.ColumnName = "vb.net" col2.Caption = "vb.net" col2.ReadOnly = False tb1.Columns.Add(col2) '| etc.

Dim r1 As DataRow '| atravs da r1 = tb1.NewRow() '| inserir a '....................................| da coluna '....................................| r1("nome") = "f7" '| r1("vb.net") = True '| integer (1/0) tb1.Rows.Add(r1) '| r1 = tb1.NewRow() r1("nome") = "GliMMer" r1("vb.net") = False tb1.Rows.Add(r1) DataGrid.DataSource = tb1 informao '| '| '| '|

Agora vai-se adicionar informao adio de filas. Para se conseguir info na clula correcta, usa-se o nome cuidado com as maisculas e minsculas! r1("nome") = tem de ser uma string r1("vb.net") = deve ser boolean / ou finalmente adiciona-se etc. .... .... ....

'| A datagrid vai agora receber toda esta

DataGrid.TableStyles.Clear() '| Apagar o estilo ser importante se a informao '...................................'| for actualizada de alguma forma. Assim pode-se '....................................| usar os mesmos nomes para o "mapping" Dim ts As New DataGridTableStyle ts.MappingName = "tabela" '| Dimensionar o estilo '| Nome do mapeamento. O tipo de Coluna importante! Esta, como vai ter texto, pode ser Datagridtextboxcolumn O nome do map o mesmo dado para que ele saiba a qual coluna Adiciona a coluna.

Dim ncol As New DataGridTextBoxColumn '| '........................................| a '........................................| ncol.MappingName = "nome" '| coluna antes. ncol.HeaderText = "Nome" '| aplicar. '| ts.GridColumnStyles.Add(ncol) Dim bcol As New DataGridBoolColumn diferente. bcol.MappingName = "vb.net" conseguir bcol.Width = 50 bcol.HeaderText = "vb.net" ts.GridColumnStyles.Add(bcol)

'| Veem que o tipo de coluna '| Tem de ser este tipo de coluna para '| mostrar bem uma checkbox. '| ... '| ...

DataGrid.TableStyles.Add(ts) '| aplicar o estilo datagrid. Notar que "datagrid" '.......................................'| o ID da datagrid que usei. No confundir. End Sub

Você também pode gostar