ASP.NET - Gridview Eval Replace with Session

 
Vista:
sin imagen de perfil

Gridview Eval Replace with Session

Publicado por Carlos (8 intervenciones) el 24/10/2014 22:00:10
Buenos dias, una consulta, tengo en mi gridview asp.net C# un campo con el cual voy a colocarle EVAL("url_imagen")
ahora la url_imagen va a venir de esta manera = _data_imagenes/Imagen01.jpg... _data_imagenes/Imagen02.jpg

Cargo la grilla usando el EVAL("url_imagen") el problema es que quiero reemplazar "_data_imagenes" con otro valor, en este caso "10.0.0.1" y ese dato lo estoy colocando en el codebehind guardandolo en un Session[ip]

Mi pregunta es, como puedo realizar dicho reemplazo?? Tengo lo siguiente:

<img src='<%# Eval("url_imagen").ToString().Replace("_data_imagenes", Session[ip]) %>' />

Colocando <img src='<%# Eval("url_imagen").ToString().Replace("_data_imagenes", "10.0.0.1") %>' /> si me funciona ya que le coloco en duro el ip, pero la idea es traerlo del codebehind.

Pero no me corre, alguien podria darme el codigo correcto, se que el Session[ip] tengo que colocarlo con <% %> pero no se como lograrlo, ayuda porfavor.


Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Gridview Eval Replace with Session

Publicado por Carlos (8 intervenciones) el 24/10/2014 22:30:06
El campo de mi datatable table url_imagen me trae "~/_data/imagenes/" + Nombre de la imagen,
Les dejo la solucion, antes de hacer el datasource a mi gridview hice el siguiente codigo

DATATABLE INICIAL:
ID - url_imagen
1 - ~/_data/imagenes/imagen01.jpg
2 - ~/_data/imagenes/imagen02.jpg
3 - ~/_data/imagenes/imagen03.jpg

string ruta = ConfigurationManager.AppSettings["RUTA_IMG"]; //10.0.0.1

1
2
3
4
5
6
7
for (int i = 0; i < table.Rows.Count; i++)
{
        var aStringBuilder = new StringBuilder(table.Rows[i]["url_imagen"].ToString());
        aStringBuilder.Remove(0, 17);
        aStringBuilder.Insert(0, ruta);
        table.Rows[i]["url_imagen"] = aStringBuilder.ToString();
}

RESULTADO FINAL
DATATABLE FINAL:
ID - url_imagen
1 - 10.0.0.1/imagen01.jpg
2 - 10.0.0.1/imagenes/imagen02.jpg
3 - 10.0.0.1/imagenes/imagen03.jpg

Y mi codigo en gridview seria: <img src='<%# Eval("url_imagen")%>' />

NOTA: EN EL CODEBEHIND AGREGAR using System.Text;

ESO ES TODO. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gridview Eval Replace with Session

Publicado por Khristian (335 intervenciones) el 27/10/2014 17:39:59
Estas armando la URL desde el origen de datos...?

Si es asi, en vez de armar _data_imagenes/Imagen01.jpg

arma en tu consulta en el mismso sqldatasource ese campo asi...

SELECT a, b, c, @ip+'/'+campoUrlImagen as urlImagen FROM tabla WHERE criterios

@ip será un parametro que en el sqldatasuorce, deberas crearlo y asignarle el valor a traves de la variable se session.

Esto hará que cuando ejecutes la consulta, le traspases al motor de bases de datos el valor de tu session("ip") y este lo concatene con el nombre de tu archivo de imagen, devolviendote la ruta completa.

Debes tener presente que:

- _data_imagenes/Imagen01.jpg, es una ruta relativa al servidor donde ejecutas la aplicacion web.
- 10.0.0.1/Imagen01.jpg, debe ser una ruta absoluta, y deberias armarla asi: http://10.0.0.1/Imagen01.jpg

Si quieres ver en el servidor de pruebas, las imagenes que tienes ya cargadas en un servidor de ejecución, puedes en la configuración de IIS asignar a tu sitio en nombre de dominio real.

Si tu dominio es http://www.midominio.com o http://10.0.0.1

Al ejecutar visual studio en tu servidor de pruebas, ya no tendras una url del tipo: http://localhost/default.aspx sino que tomará el valor de tu dominio asignado http://www.midominio.com/default.aspx o http://10.0.0.1/default.aspx

Y podras trabajar facilmente en local, con acceso a tus rutas relativas al servidor de ejecucion.

Saludos


Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar