Imagen de Ativo/Cancelado em uma coluna do Datagrid
16/10/2007
0
estou precisando da ajuda de vcs...
estou precisando criar uma coluna em um datagrid que mostre uma imagem quando o registro esta ativo, e mostre outra imagem quando o registro estiver cancelado..
como deve fazer...isso.....sera que alguem tem como me ajudar...
Fico muito grato..
Hsroque
Posts
12/11/2007
Rodrigofonseca
Para fazer o que você quer, terá que manipular o evento DataBound do teu DetailsView.
Será preciso também declarar no DataKeysNames do DetailsView o nome do campo da tua consulta que contêem o valor que indica se o registro esta ATIVO ou Inativo.
Após declarar o nome do campo no DataKeysNames do DetailsView, você deverá manipular o evento DataBound;
Código do DataBound:
Onde:
dtvDados = Nome do DetailsView;
´Nome do DataKeys´ = Nome declarado no DataKeysNames do DetailsView;
protected void dtvDados_DataBound(object sender, EventArgs e)
{
Boolean vIsRegistroAtivo = Convert.ToBoolean(dtvDados.DataKeys[´Nome do DataKeys´].ToString());
Image objImgAtivoInativo =(Image)dtvDados.FindControl(´Nome da Imagem´);
objImgAtivoInativo.ImageUrl = vIsRegistroAtivo ? ´caminho da imagem Ativo´ : ´caminho imagem Inativo´;
}
Atenciosamente,
Rodrigo
Analista/Desenvolvedor
C#,JAVA,ASP.NET,VB.NET E ASP
digo.fonseca@gmail.com
04/01/2008
Jivandf
Para saber se esta ativo vc armazena algo em uma coluna certo.
Cria um metodo na pagina que retorna uma string. ex:
protected string Status(object stValor) { if (stValor == ´x´) { return = "off.jpg"; } else { return = "on.jpg"; } }
ao no seu grid add um
<asp: Image ImageUrl=´<¬# Status(Eval("campo")) ¬>´ ></asp:Image>
04/01/2008
Jivandf
protected string Status(object stValor) { if (stValor == ´x´) { return "off.jpg"; } else { return "on.jpg"; } }
<asp: Image ImageUrl=´<¬# Status(Eval("campo")) ¬>´ ></asp:Image>
09/01/2008
Ricardo Silva
vc quer soh vizualiza se esta ativo/Inativo ou vc quer mudar o status em tempo de execução...
se for soh vizualizar pode usar o q ja foi citado, se não vc tera que usar um ImageFild
dentro do evento RowDataBound fica assim:
//Verifica se o Tipo da Linha é um DataRow if(e.Row.RowType == DataControlRowType.DataRow) { if((e.Row.Cells[2].Controls[0] as ImageButton).AlternateText == "False") (e.Row.Cells[2].Controls[0] as ImageButton).ImageUrl = "Inativo.bmp"; else (e.Row.Cells[2].Controls[0] as ImageButton).ImageUrl = "Ativo.bmp"; //
no RowCommand fica assim:
//Verifica qual comando vc Clicou if(e.CommandName == "Abrir") { if((gridViewhsroque.Rows[int.Parse(e.CommandArgument.ToString())].Cells[2].Controls[0] as ImageButton).AlternateText == "False") { (gridViewhsroque.Rows[int.Parse(e.CommandArgument.ToString())].Cells[2].Controls[0] as ImageButton).ImageUrl = "Ativo.bmp"; (gridViewhsroque.Rows[int.Parse(e.CommandArgument.ToString())].Cells[2].Controls[0] as ImageButton).AlternateText = "True"; } else { (gridViewhsroque.Rows[int.Parse(e.CommandArgument.ToString())].Cells[2].Controls[0] as ImageButton).ImageUrl = "Inativo.bmp"; (gridViewhsroque.Rows[int.Parse(e.CommandArgument.ToString())].Cells[2].Controls[0] as ImageButton).AlternateText = "False"; } }
coloca o grid dentro de um UpDatePanel vc vai ver que Bacana Vai Ficar...
No banco o estatus esta em BIT mas poderia ser Int, não sei o q vc esta usando mas da olhada e faz uma adaptação com o tipo de dado vc esta usando
Espero ter ajudado...
Clique aqui para fazer login e interagir na Comunidade :)