我有一个带有图像控件的datalist,其aspx代码是
<asp:DataList ID="DataList1" runat="server"
RepeatDirection="Horizontal" RepeatColumns="4">
<ItemTemplate>
<div>
<asp:Image ID="Image1" ImageUrl='<%#Eval("IMAGE") %>'
runat="server" Height="75px" Width="75px" />
</div>
</ItemTemplate>
</asp:DataList>
我正试图从数据库中获取图像的代码是
PagedDataSource objds = new PagedDataSource();
string query = "SELECT * FROM Icon";
SqlConnection con = new SqlConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ICONBANKConnectionString"].ConnectionString;
try
{
SqlCommand cmd = new SqlCommand(query, con);
con.Open();
//SqlDataReader dr = cmd.ExecuteReader();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(query, con);
DataSet ds = new DataSet();
da.Fill(ds, "images");
objds.DataSource = ds.Tables[0].DefaultView;
DataList1.DataSource = objds;
DataList1.DataBind();
con.Close();
}
catch (Exception)
{
throw;
}
sql表看起来像这样
Icon( ID, SUBCAT_ID, ALBUM_ID, SUBCAT_NAME, ALBUM_NAME, IMAGE, ICON_SIZE,
BLACKWHITE, NAME, DESIGNER, HITS, RATINGS, PRICE)
当我调试代码时,它显示数据集中的表行,但是当我运行页面时,它没有向我显示图像....请指导我背后的问题是什么。图像存储在数据库中的另一件事是二进制格式
答案 0 :(得分:1)
您正在将字节[]或二进制数据设置为ImageURL字段,这是错误的。图像URL需要一个路径。
查看这个问题和答案:
Convert from binary data to an image control in ASP.NET
在datalist的itemdatabound事件中,找到您的图像控件。如果你正在使用html标签设置src属性,如果你正在使用,请查看这个答案:
//Find your image control (Image1 lets say) on the item databound event of the datalist.
Byte[] myImage = GetMyImageFromMyDataSource();
String st = Server.MapPath("myImageNameOrID.jpg"); // Try Name + ID to make it unique
FileStream fs = new FileStream(st, FileMode.Create, FileAccess.Write);
fs.Write(myImage, 0, myImage.Length);
fs.Close();
Image1.ImageUrl = "myImageNameOrID.jpg";
编辑:查看此链接以了解有关使用datalist的itemdatabound事件的更多信息: