Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/05/2017, 08:12
agus_jelnaks
 
Fecha de Ingreso: octubre-2014
Ubicación: Mendoza
Mensajes: 10
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Error en base de datos Northwind

Gracias por responder Drako_18. Te comento el tema de mostrar la imagen logré resolverlo, pero tengo un problema, al momento de mostrar las imagenes siempre me muestra la misma ya que le paso el id por url y el gridview tiene que mostrar una imagen distinta por cada fila, ¿alguna idea?. Acá dejo el código que tengo hasta ahora:

Archivo Handler.ashx (manejador para el tratamiento de imágenes)
Código:
public class Handler : IHttpHandler {

    public void ProcessRequest(HttpContext context)
    {
        string id = context.Request.QueryString["id"];
        
        System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Data Source=PROPIETARIO-HP\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
        System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand("SELECT Photo FROM Employees where EmployeeID=" + id, con);
        

        con.Open();
        byte[] foto = (byte[])com.ExecuteScalar();
        con.Close();

        context.Response.ContentType = "image/jpeg";
        context.Response.OutputStream.Write(foto, 78, foto.Length - 78);



        //System.Data.DataSet ds = new System.Data.DataSet();
        //da.Fill(ds, "Employees");
        //con.Open();
        //byte[] foto = null;
        //int[] img = new int[9];
        //byte[][] img = new byte[9][];
        //if (ds.Tables["Employees"].Rows.Count != 0)
        //{
        //    for (int i = 0; i < ds.Tables["Employees"].Rows.Count; i++)
        //    {
        //        foto = (byte[])ds.Tables["Employees"].Rows[i]["Photo"];
        //    }
        //}
        


        //con.Close();

        //for (int j = 0; j < foto.Length; j++)
        //{
        //    context.Response.ContentType = "image/jpeg";
        //    context.Response.OutputStream.Write(foto, 78, foto.Length - 78); 
        //}
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

El código que está comentado lo dejé para que vean que intenté hacer un for para recorrer las distintas imágenes y que las asigne pero también siempre me muestra la misma.
Archivo aspx

Código:
<asp:GridView runat="server" ID="gvLista" AllowSorting="True" 
            AutoGenerateEditButton="True" AutoGenerateDeleteButton="True" DataKeyNames="EmployeeID" AutoGenerateColumns="False" DataSourceID="sqldsDatos">
            <Columns>
                <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
                <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="TitleOfCourtesy" HeaderText="TitleOfCourtesy" SortExpression="TitleOfCourtesy" />
                <asp:BoundField DataField="BirthDate" HeaderText="BirthDate" SortExpression="BirthDate" />
                <asp:BoundField DataField="HireDate" HeaderText="HireDate" SortExpression="HireDate" />
                <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
                <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                <asp:BoundField DataField="Region" HeaderText="Region" SortExpression="Region" />
                <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" SortExpression="PostalCode" />
                <asp:BoundField DataField="Country" HeaderText="Country" SortExpression="Country" />
                <asp:BoundField DataField="HomePhone" HeaderText="HomePhone" SortExpression="HomePhone" />
                <asp:BoundField DataField="Extension" HeaderText="Extension" SortExpression="Extension" />
                <asp:ImageField DataImageUrlField="Photo" DataImageUrlFormatString="~/Handler.ashx?id=1" HeaderText="Photo" SortExpression="Photo" />
                <asp:BoundField DataField="Notes" HeaderText="Notes" SortExpression="Notes" />
                <asp:BoundField DataField="ReportsTo" HeaderText="ReportsTo" SortExpression="ReportsTo" />
                <asp:BoundField DataField="PhotoPath" HeaderText="PhotoPath" SortExpression="PhotoPath" />
            </Columns>
        </asp:GridView>
        
        <asp:SqlDataSource runat="server" ID="sqldsDatos" SelectCommand="SELECT * FROM [Employees]"
            UpdateCommand="UPDATE [Employees] SET [LastName] = @LastName, [FirstName] = @FirstName, [Title] = @Title, [TitleOfCourtesy] = @TitleOfCourtesy, [BirthDate] = @BirthDate,
            [HireDate] = @HireDate, [Address] = @Address, [City] = @City, [Region] = @Region, [PostalCode] = @PostalCode, [Country] = @Country, [HomePhone] = @HomePhone,
            [Extension] = @Extension, [Notes] = @Notes, [ReportsTo] = @ReportsTo WHERE [EmployeeID] = @EmployeeID"
            DeleteCommand="DELETE FROM [Employees] WHERE [EmployeeID] = @EmployeeID" ConnectionString="<%$ ConnectionStrings:Northwind %>">
Como ven en el campo ImageField en la propiedad DataImageUrlFormatString le paso la página del manejador con un id, pero lo que yo necesito es que me muestre las distintas imágenes que hay en la base y de la forma en que lo tengo siempre me muestra la misma.