Array
(
)

Imagen de Ativo/Cancelado em uma coluna do Datagrid

Hsroque
   - 16 out 2007

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..

Rodrigofonseca
   - 12 nov 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

Jivandf
   - 04 jan 2008

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:

#Código

protected string Status(object stValor)
{
   if (stValor == ´x´)
   {
      return = "off.jpg";
   }
   else
   {
      return = "on.jpg";
   }
}


ao no seu grid add um
#Código
<asp: Image ImageUrl=´<¬# Status(Eval("campo")) ¬>´ ></asp:Image>


Jivandf
   - 04 jan 2008


Citação:
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:

#Código

protected string Status(object stValor)
{
   if (stValor == ´x´)
   {
      return "off.jpg";
   }
   else
   {
      return "on.jpg";
   }
}


ao no seu grid add um
#Código
<asp: Image ImageUrl=´<¬# Status(Eval("campo")) ¬>´ ></asp:Image>


Ricardo Silva
   - 09 jan 2008

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:
#Código

//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:
#Código
//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...