Imagefield i Visual Studio 2010 - flere billeder i Gridview
Hej. Det er lykkedes mig at lave en billedeupload til en database og derefter en eventhandler, der kan vise billedet fra den binære kode, som billedet har fået i databasen.Men, den vil ikke lade mig vise mere et billede i Gridview, selvom jeg har lagt flere billeder ind, selvfølgelig ved hvert sit ID (som hedder DealID i dette tilfælde).
Her er gridview koden:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="dealID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="dealID" HeaderText="dealID" InsertVisible="False"
ReadOnly="True" SortExpression="dealID" />
<asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />
<asp:BoundField DataField="originalPrice" HeaderText="originalPrice"
SortExpression="originalPrice" />
<asp:BoundField DataField="midPrice" HeaderText="midPrice"
SortExpression="midPrice" />
<asp:BoundField DataField="lowPrice" HeaderText="lowPrice"
SortExpression="lowPrice" />
<asp:BoundField DataField="buyers" HeaderText="buyers"
SortExpression="buyers" />
<asp:TemplateField HeaderText="Image">
<ItemTemplate>
<asp:Image ID="Image1" runat="server"
ImageUrl='<%# "Handler.ashx?dealID=" + Eval("dealID")%>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Her er min eventhandler - handler.ashx:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["DealSource"].ConnectionString;
// Create SQL Command. Pic1 is the row where the image is uploaded from the table Deals having DealID as primary key. The ASP.net code is: <asp:Image ID="Image1" runat="server" ImageUrl='<%# "Handler.ashx?dealID=" + Eval("dealID")%>'/>
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Select pic1 from Deals where dealID =@dealID";
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = con;
SqlParameter ImageID = new SqlParameter("@dealID", System.Data.SqlDbType.Int);
ImageID.Value = context.Request.QueryString["dealID"];
cmd.Parameters.Add(ImageID);
con.Open();
SqlDataReader dReader = cmd.ExecuteReader();
dReader.Read();
context.Response.BinaryWrite((byte[])dReader["pic1"]);
dReader.Close();
con.Close();
}
public bool IsReusable
{
get
{
return false;
}
}
}
Jeg får fejlen på denne linie:
context.Response.BinaryWrite((byte[])dReader["pic1"]);
og fejlen er
"Unable to cast object of type 'System.DBNull' to type 'System.Byte[]'."
Nogle der har noget?