none
mostrar imagenes en gridview

    Question

  • Hola amigos,

    Quiero mostrar un listado de fotos en un gridview y no lo puedo lograr.

    Lo que hago es una funcion que obtiene de la base de datos las fotos pertenecientes a un alumno en particular.

    public static List<Fotos> ObtenerFotos(string nombre)
        {
          Fotos Fot = null;
          List<Fotos> Lista = new List<Fotos>();
          Object IdUsuario;
          MembershipUser Usuario = Membership.GetUser(nombre);
          IdUsuario = Usuario.ProviderUserKey;
    
          string connectionString = ConfigurationManager.ConnectionStrings["MiBaseCadena"].ConnectionString;
    
    
          string stringSql = "SELECT * FROM UsersFotos WHERE UserId = @UserId ";
          using (SqlConnection myConnection = new SqlConnection(connectionString))
          {
            myConnection.Open(); SqlCommand myCommand = new SqlCommand(stringSql, myConnection);
           
            myCommand.Parameters.AddWithValue("@UserId", IdUsuario);
    
             SqlDataReader reader = myCommand.ExecuteReader();
    
            while (reader.Read())
            {
              Fot = new Fotos();
                      
              Fot.Nombre = (string)reader["Nombre"];
              Fot.Descripcion = (string)reader["Descripcion"];
              Fot.Url = (string)reader["Url"];
    
              Lista.Add(Fot);
            }
    
          }
    
          return Lista;
    
        }

    luego cargo por codigo el gridview con la lista de fotos con el siguiente codigo:

    string Nombre = DropDownList1.SelectedValue;
        GridView1.DataSource = ImagenesLP.ObtenerFotos(Nombre);
        GridView1.DataBind();

    por último agrego una columna "ImageField" en el gridview y pongo en su propiedad "ImageUrlField" pongo "Url".

    Pero no me muestra las fotos.

    Alguien me puede ayudar y decirme que es lo que está mal.

    Muchas gracias.

    Luispa

    Thursday, May 26, 2011 11:43 PM

Answers

  • Amigos,

    Encontre la solucion!

    Está todo perfecto lo que hacia para mostrar la foto, pero el único problema es que en la columna Url de la base de datos tenia almacenada la dirección que me proporcionaba el path completo en el FileUpload cuando subia la foto como muestro a continuación:

    string

     

    Url = Path.Combine(Server.MapPath("~/Fotos"), FileUpload1.FileName);

    Y ese es el error, ya que con eso tengo una direccion completa a la foto, pero estando en un hosting esa dirección no me sirve para llegar a la foto.

    Entonces la solución es usar solo en nombre del archivo, para llegar a la foto es decir con

    string Url = FileUpload1.FileName

    De esta forma en el Gridview pongo:

     

     

    <asp:ImageField DataImageUrlField="Url"

     

     

    DataImageUrlFormatString="~/Fotos/{0}" HeaderText

    ="Imagen">

     

     

    </asp:ImageField

    >

     

    Espero con esto poder ayudar a alguien mas.

    Saludos,

    Luispa

    • Marked as answer by Luispa Friday, May 27, 2011 2:31 AM
    Friday, May 27, 2011 2:31 AM

All replies

  • hola

    el tema es que si la foto esta en la db de forma directa no podrias mostrarla requieres ded algo que envie el array de byte de la foto como respuesta

    esto lo podrias lograr con un handler

    como lo explico aqui

    [ASP.NET] - Guardar Imagen base de datos

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Friday, May 27, 2011 12:57 AM
  • Hola Leandro,

    Gracias por la respuesta, pero en realidad te comento que en la base de datos tengo la Url de la foto, ya que la foto esta almacenada en el servidor.

    Si yo dejo el gridview que cree automaticamente las columnas, este me muestra bien el nombre la descripcion y en la ultima columna la Url de la foto, pero al cambiar la columna a una "ImageField" y poniendo en su propiedad "ImageUrlField" pongo "Url", ya solo me muestra el cuadrito con la cruz roja.

    Espero tus comentarios.

    Saludos,

    Luispa

    Friday, May 27, 2011 1:22 AM
  • Amigos,

    Encontre la solucion!

    Está todo perfecto lo que hacia para mostrar la foto, pero el único problema es que en la columna Url de la base de datos tenia almacenada la dirección que me proporcionaba el path completo en el FileUpload cuando subia la foto como muestro a continuación:

    string

     

    Url = Path.Combine(Server.MapPath("~/Fotos"), FileUpload1.FileName);

    Y ese es el error, ya que con eso tengo una direccion completa a la foto, pero estando en un hosting esa dirección no me sirve para llegar a la foto.

    Entonces la solución es usar solo en nombre del archivo, para llegar a la foto es decir con

    string Url = FileUpload1.FileName

    De esta forma en el Gridview pongo:

     

     

    <asp:ImageField DataImageUrlField="Url"

     

     

    DataImageUrlFormatString="~/Fotos/{0}" HeaderText

    ="Imagen">

     

     

    </asp:ImageField

    >

     

    Espero con esto poder ayudar a alguien mas.

    Saludos,

    Luispa

    • Marked as answer by Luispa Friday, May 27, 2011 2:31 AM
    Friday, May 27, 2011 2:31 AM
  • Hola Luispa gracias por el aporte, tengo el mismo problema y recien estoy en esto de asp, bueno en la base de datos tengo la direccion de dnd esta almacenada mi imagen, image/nombre.jpg ahora no entiendo eso del url, estoy trabajando en localhost, espero me puedas ayudar ya que no se muestran mis imagenes, muchas gracias

    Saludos

    Wednesday, September 28, 2011 1:55 PM