C# ASP.NET将二进制图像绑定到中继器中的图像控件
我有这样一个简单的中继器:C# ASP.NET将二进制图像绑定到中继器中的图像控件,c#,asp.net,C#,Asp.net,我有这样一个简单的中继器: <asp:Repeater ID="repImages" runat="server" OnItemDataBound="repImages_ItemDataBound"> <ItemTemplate> <asp:Image ID="Image1" runat="server" /> </ItemTemplate> </asp:Repeater>
<asp:Repeater ID="repImages" runat="server" OnItemDataBound="repImages_ItemDataBound">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" />
</ItemTemplate>
</asp:Repeater>
void BindImages()
{
string sql = @"SELECT A.*, B.* FROM ImageMetaData A
INNER JOIN ImageData B
ON A.ImageId = B.ImageId
WHERE A.CapId = @capid AND width = 250";
SqlQuery q = new SqlQuery("imagelibrary", sql);
q.Parameters.AddWithValue("@capid", Convert.ToInt32(ddlVehicle.SelectedValue));
DataTable dt = q.OpenDataTable();
repImages.DataSource = dt;
repImages.DataBind();
}
我绑定到的datatable有一个字段,其中包含一个作为字节数组的图像。如何使图像控件显示以下内容:
protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Image img = (Image)e.Item.FindControl("Image1");
if (img != null)
{
img.ImageUrl = "data:image/png;base64," + ""; ???
}
}
感谢要将字节[]转换为base64编码字符串,可以使用th
convert.ToBase64String(byte[])
方法
根据您的代码,类似于以下内容的内容应该可以工作:
protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Image img = (Image)e.Item.FindControl("Image1");
if (img != null)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
DataRowView row = e.Item.DataItem as DataRowView;
byte[] data = (byte[])row["ImageData"]; // get your data from the row
img.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(data);
}
}
}
要将字节[]转换为base64编码字符串,可以使用th
convert.ToBase64String(byte[])
方法
根据您的代码,类似于以下内容的内容应该可以工作:
protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Image img = (Image)e.Item.FindControl("Image1");
if (img != null)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
DataRowView row = e.Item.DataItem as DataRowView;
byte[] data = (byte[])row["ImageData"]; // get your data from the row
img.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(data);
}
}
}