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"); } } |
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.