将图像从访问数据库中挖掘到GridView中

时间:2015-04-14 06:07:46

标签: c# asp.net image ms-access gridview

我正构建一个ASP.Net Web应用程序,后面有一个Microsoft Access数据库。在数据库中,我有一个名为items的表。其中一列是image - 这是项目的可视化表示,它是数据库计算机上图像的超链接。

我有两个问题:

首先,这是一个糟糕的设计吗?您是否愿意将图像本身保存在数据库中?如果是这样,你会怎么做?

第二个是,如何在gridView中以这种方式表示保存的图像?

我在C#中尝试了以下内容;

使用OleDbCommand填充数据集:

SELECT ItemName as Name,ItemPicture as Picture...

并将其设置为GridView的源代码,但遗憾的是,它只是在网格中写出了超链接: 1.jpg#1.jpg#而不是显示图片。

你会怎么做?

1 个答案:

答案 0 :(得分:1)

  

这是一个糟糕的设计

一般来说,没有。

关于将图像作为BLOB存储在数据库中而不是使用OS文件系统的主题,有很多白皮书。您必须进行研究以确定哪种方式适合您。但鉴于您正在使用Access,我避免将图像存储在数据库中,因为Access对数据库的整体文件大小的上限为2GB。图像可以很快填满。

假设图片字段是相关文件的相对路径,您只需要向ImageField添加Gridview并将图片网址字段绑定到DataImageURLField属性。

<asp:ImageField DataImageUrlField='<%# Bind("Picture") %>'></asp:ImageField>

这假设您的ItemPicture字段包含与此类似的字符串:&#34; /images/1.jpg"。如果图像字段实际上是一个超链接(一个html <a>标签),那么您可以在Gridview中添加TemplateField,在ItemTemplate中添加一个`控件并以类似方式绑定它:

<asp:TemplateField>
  <EditItemTemplate>
  </EditItemTemplate>
  <ItemTemplate>
    <asp:Literal ID="Literal1" runat="server" Text='<%# Bind("Picture") %>'
  </ItemTemplate>
<asp:TemplateField>