简体   繁体   English

ASP.NET将二进制映像绑定到转发器中的映像控制

[英]ASP.NET Bind binary image to image control in repeater

I have a simple repeater like this: 我有一个像这样的简单转发器:

<asp:Repeater ID="repImages" runat="server" OnItemDataBound="repImages_ItemDataBound">
        <ItemTemplate>
            <asp:Image ID="Image1" runat="server" />
        </ItemTemplate>
    </asp:Repeater>

Databinding like this: 像这样的数据绑定:

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();
    }

The datatable i've bound to has a field which contains an image as a byte array. 我绑定的数据表有一个字段,其中包含一个图像作为字节数组。 How do I get the image control to display this: 如何让图像控件显示:

 protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Image img = (Image)e.Item.FindControl("Image1");
        if (img != null)
        {
            img.ImageUrl = "data:image/png;base64," + ""; ???
        }
    }

Thanks 谢谢

To convert a byte[] to a base64 encoded string, you can use th Convert.ToBase64String(byte[]) method. 要将byte []转换为base64编码的字符串,可以使用Convert.ToBase64String(byte[])方法。

Based on your code, something similar to the following should work: 根据您的代码,类似于以下内容应该工作:

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); 
         }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM