Imagen de Ativo/Cancelado em uma coluna do Datagrid
Galera, tudo tranquilo....
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..
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
Curtidas 0
Respostas
Rodrigofonseca
16/10/2007
Prezado Hsroque,
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
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
GOSTEI 0
Jivandf
16/10/2007
Tenho uma solução mais prática.
Para saber se esta ativo vc armazena algo em uma coluna certo.
Cria um metodo na pagina que retorna uma string. ex:
ao no seu grid add um
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>
GOSTEI 0
Jivandf
16/10/2007
Tenho uma solução mais prática.
Para saber se esta ativo vc armazena algo em uma coluna certo.
Cria um metodo na pagina que retorna uma string. ex:
ao no seu grid add um
protected string Status(object stValor) { if (stValor == ´x´) { return "off.jpg"; } else { return "on.jpg"; } }
<asp: Image ImageUrl=´<¬# Status(Eval("campo")) ¬>´ ></asp:Image>
GOSTEI 0
Ricardo Silva
16/10/2007
Hsroque...
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:
no RowCommand fica assim:
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...
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...
GOSTEI 0