;

sexta-feira, 7 de janeiro de 2011

Ocultar coluna do gridview


Esta é uma dica “jogo rápido” que me ocorreu agora. Se aplica a quem utiliza o gridview (asp:GridView) nas aplicações ASP.NET. 

Ao setar uma coluna do gridview como invisível, ou seja, atribuir “visible = false” a uma coluna, em modo de design, esta não será renderizada. Ok, mas e como fazer se eu quiser guardar, por exemplo, o código de um registro, mas não quiser exibi-lo? Simples. Trate o evento RowDataBound do gridview. Este evento é disparado para cada linha, individualmente, ao dar o bind do grid. Então sete o atributo visible da célula ,que não quer exibir, igual a false em modo de execução. No exemplo abaixo estou escondendo a primeira coluna do gridview.

protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[0].Visible = false;
}

Assim a primeira coluna não será exibida, mas será renderizada, e seu valor poderá ser consultado normalmente (por exemplo desta forma: gridview.Rows[0].Cells[0].Text).

11 comentários:

Anônimo disse...

Cara no meu código ele da erro se eu colocar
e.Row.Cells[1].Visible = false;
por exemplo porém se uso na primeira coluna
que é com zero funciona...sabe me dizer porque pode acontecer?
[a grid tem 7 colunas e só funciona com [0] com as outras 6 não]

dotDicas disse...

Bom, tem que ver o tipo de erro, e a mensagem de erro que retorna. Com certeza o erro ocorre por outro motivo. Só mesmo vendo o código e depurando.
Se quiser me manda um email. O endereço está na aba contato.
Abraço

Ricardo disse...

Funcionou certinho aqui.

Obrigado!

dotDicas disse...

Opa, q bom q a dica foi útil.
Obrigado pelo retorno Ricardo.
Abraço.

Anônimo disse...

Vlw mesmo !! Funcionou just perfect !!

dotDicas disse...

Obrigado pelo feedback.
Abraço.

Ednaldo Soares disse...

Sempre tive problemas com isto, esta ajuda vai me servir muito!!! valeu

dotDicas disse...

Fico feliz em ajudar.
Obrigado pelo retorno.
Abraço.

Anônimo disse...

Ao inserir esse comando a paginação do grid sumiu

dotDicas disse...

Só vendo teu código para ver o q aconteceu. Verifica se tu não esqueceu de fechar alguma tag ou se a paginação está habilitada.

cristiano sena disse...

tem que acrescentar isso

if (e.Row.RowType.ToString() != "Pager")
{
e.Row.Cells[1].Visible = false;
e.Row.Cells[2].Visible = false;
e.Row.Cells[3].Visible = false;
}

senão vai esconder o footer e a paginação vai dar pau, tambem vai dar pau em outras linhas, assim ele vai verificando cada linha e o seu tipo e só vai trabalhar nas linhas necessárias.

Postar um comentário