如何在数据模板项中设置System.Drawing.Image为System.ui.WebControls.Image

本文关键字:Image System Drawing WebControls ui 设置 数据 | 更新日期: 2023-09-27 17:50:18

我正在制作一个书店网站。我使用Visual Studio 2010和MS SQL数据库。我有关于书的图像。我在数据库中有一个Book表,在这个表中有一个image列。

我将这些图像(以字节数组格式)保存在数据库中。

我在Windows窗体应用程序中测试了它,一切正常。我的意思是我可以检索和保存图像到/从数据库。当我从数据库中检索它们时,我将它们保存在Book类中(以System.Drawing.Image格式)。

    public Book
    {
          private int id;
          private System.Drawing.Image image;
          // name and other .. informations,  constructor, get and set methods;
    }
    public BookLayer
    {
           // after call this method i can get all informations from database
           public static List<Book> getBooks()
           {
            }
    }

我在Asp.net 4 Web项目中使用objectdatasource的datalist。我为objectdatasource编写了Book和BookLayer类。除了图像,我可以在数据中显示所有信息。因为image是Book类中的System.Drawing.Image,而image是data模板项中的System.ui.WebControls.Image。格式不同。我怎么能做到呢?这有错吗?请给我一些建议。

如何在数据模板项中设置System.Drawing.Image为System.ui.WebControls.Image

是使用处理器。你可以添加一个模板字段

 <ItemTemplate>
<img border="2" width="150px" src="../images/loading.gif" onload="getpic(this,'<%# Eval("bkid")%>');"/>
</ItemTemplate>

使用下面的Java脚本函数getpic(img, pid) {

try {
img.onload = null;
img.src = '../Getimage.ashx?id=' + pid;
} catch (e) {
alert(e);
}
}
</script>

在你的getimage.ashx

byte[] imageBytes = ;// ToDOget your byte
            Bitmap newBmp = ConvertToBitmap(imageBytes);
            if (newBmp != null)
            {
                newBmp.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                newBmp.Dispose();
            }