Arquivo para Setembro, 2008

02
Set
08

Linha do DataGrid – Disparando algum evento

 

 Muitas vezes, quando dispomos aos usuários uma página web com uma listagem de registros e um botão de ação, sempre é interessante acoplar nesta solução uma funcionalidade que não está presente por padrão. Essa funcionalidade é habilitar a linha toda do controle DataGrid para executar a ação.

Para explicar melhor, analise a figura ao lado. Vemos que temos um botão do tipo Select que marca o registro quando o usuário pressionar. Muitas vezes o usuário quer clicar em qualquer lugar desta linha e executar este processo e não somente em cima daquele controle. Este artigo vai abordar este ponto, ou seja, aprender como gerar esta funcionalidade.

 

 Para que possamos alcançar esse efeito, temos que utilizar o evento ItemDataBound do DataGrid, onde nele deve ser verificado o tipo da linha através da propriedade ItemType para assegurar que é uma linha de registro. Depois desta verificação, recuperamos o controle LinkButton através da coleção de controles que a propriedade Item disponibiliza. De posse do LinkButton, utilizamos o método GetPostBackEventReference da classe Page, onde informamos o controle e é retornado a referência ao código script que é invocado quando o controle é clicado e, consequentemente causa o PostBack. O código abaixo exemplifica o que vimos:

 

private void DataGrid1_ItemDataBound(Object sender,
     System.Web.UI.WebControls.DataGridItemEventArgs e){

     if(e.Item.ItemType == ListItemType.AlternatingItem ||
          e.Item.ItemType == ListItemType.Item){

          LinkButton lnk = (LinkButton)e.Item.Cells[0].Controls[0];
          e.Item.Attributes.Add(“onClick”, Page.GetPostBackEventReference(link, “”));
          e.Item.Attributes.Add(“style”, “cursor:hand”);
     }
}

 VB.NET

Como vemos, o retorno do método GetPostBackEventReference adicionamos como value do evento Javascript onClick, que será executado no cliente e terá a mesma função do botão Select. Por último, apenas adicionamos um style na linha do DataGrid para que o cursor do mouse fique em forma de “mão” para dar a impressão ao usuário que a linha é clicável.

 Outra forma de usar:

 

 
Protected Sub dgConsultaCliente_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles dgConsultaCliente.RowDataBound
If e.Row.RowType = ListItemType.Item Or e.Row.RowType = ListItemType.AlternatingItem Then
Dim retorno As String = “”
e.Row.Style(“cursor”) = “hand” ‘ Cursor
If dgConsultaCliente.Columns.Count > 1 Or dgConsultaCliente.AutoGenerateColumns Then
‘e.Row.Cells(0).Text = “” & e.Row.Cells(0).Text & “
e.Row.Attributes.Add(“onClick”, “javascript:txtCodCons.value=” & e.Row.Cells(0).Text & “;” & ClientScript.GetPostBackEventReference(btnPesquisar, “”))
e.Row.Cells(0).Text = “” & e.Row.Cells(0).Text & “
End If
End If
End Sub

Link e créditos da matéria: http://www.projetando.net/Sections/ViewArticle.aspx?ArticleID=46

 

   



 

Setembro 2008
S T Q Q S S D
« Ago    
1234567
891011121314
15161718192021
22232425262728
2930