Olá a todos!
Este tutorial é sobre GridView em RAD Studio .NET, ASP.NET.
- Adicionar Colunas em Tempo de Execução
Em alguns casos é necessário adicionar colunas em tempo de execução em uma GridView, isso pode ser feito adicionando um código parecido com este no evento que desejar:
var CAMPO1, CAMPO2, CAMPO3, CAMPO4 : BoundField; begin CAMPO1 := BoundField.Create; CAMPO2 := BoundField.Create; CAMPO3 := BoundField.Create; CAMPO4 := BoundField.Create; try CAMPO1.HeaderText := 'Código'; CAMPO1.DataField := 'CODIGO'; CAMPO2.HeaderText := 'Nome'; CAMPO2.DataField := 'NOME'; CAMPO3.HeaderText := 'Idade'; CAMPO3.DataField := 'IDADE'; CAMPO4.HeaderText := 'Telefone'; CAMPO4.DataField := 'TELEFONE'; GridView1.Columns.Insert(0,CAMPO1); GridView1.Columns.Insert(1,CAMPO2); GridView1.Columns.Insert(2,CAMPO3); GridView1.Columns.Insert(3,CAMPO4); finally CAMPO1.Free; CAMPO2.Free; CAMPO3.Free; CAMPO4.Free; end; end;
Obs: Pode ser adicionado outros tipos de colunas também como ButtonColumn e definir outras propriedades.
- Recuperar Valores
Tive alguns problemas para recuperar os valores de uma gridview no começo porque quando você define que a coluna código, por exemplo, é visible=false, ele não permite pegar o conteúdo daquela coluna facilmente, mas com DataKeys é tranquilo, os códigos abaixo:
GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Item[0].ToString;
ou
GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString;
Na gridview precisa ser preenchido a propriedade DataKeysNames, pode ir direto no código ou configurar na paleta propriedades mesmo, coloque o nome do campo que busca no BD, se quiser pode colocar mais de um(array), desde que separe com vírgula, se colocar mais de um, muda o valor -> Values[array], por exemplo, se quiser pegar o valor NOME, ficaria assim:
Ex: datakeynames="CODIGO, NOME"
//pega o código GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString; //pega o nome GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[1].ToString;
O evento para pegar os valores é o RowCommand, fica no mesmo estilo que datagrid, coloca um buttonfield e atribui um commandname pra ele, no evento rowcommand pode-se implementar um codigo parecido com esse:
if e.CommandName = 'EXCLUIR' then begin lblcontrole.text := GrVwComponentes.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString; Excluir; end;
Qualquer dúvida postem ai!!
6 comentários:
Olá você poderia me ajudar com a paginação no gridview?
eu estou marcando em alowpager = true
e não funciona, gera o seguinte erro :
"The data source does not support server-side data paging."
você poderia me ajudar a resolver este problema???
Olá ANDREZA,
Após setar a propriedade AllowPager = True é preciso adicionar no evento PageIndexChanging da sua gridview o seguinte código:
gridview.PageIndex := e.NewPageIndex;
gridview.databind;
Se isso não resolver talvez seja porque você está usando DataReader, tente usar DataSet ou armazenar os dados em uma tabela antes de passar para o Grid.
Espero ter ajudado.
Alguns links com soluções para este problema:
http://geeksnet.blogspot.com/2008/09/exemplo-de-paginao.html
http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=1918227&SiteID=21
Show de bola, Bufo uns código.. hehe
muito útil!
flw
Olá! Você save me dizer se tem como fixar o tamanho do Datagrid no Delphi 8 .NET?
Obrigado
Olá Márcio, não tenho certeza de como fazer isso no Delphi 8 porque não cheguei a usar esta versão, pulei da 7 para 2007... acredito que o DataGrid deva ter a propriedade "width" (Largura) onde você pode definir em % ou px, só da uma procurada que você encontra, ou coloca direto no código mesmo...
Flws
Alow amigo... sou novo na área. Sabes dizer como faço para usar parâmetros no SelectQuery do SqlDataSource? Fiz uma app bem pequena. Quando clico no botão dou um SELECT em uma tabela, mas o grid nunca aparece, simplesmente fica em branco.
Postar um comentário