我正构建一个ASP.Net Web应用程序,后面有一个Microsoft Access数据库。在数据库中,我有一个名为items
的表。其中一列是image
- 这是项目的可视化表示,它是数据库计算机上图像的超链接。
我有两个问题:
首先,这是一个糟糕的设计吗?您是否愿意将图像本身保存在数据库中?如果是这样,你会怎么做?
第二个是,如何在gridView中以这种方式表示保存的图像?
我在C#中尝试了以下内容;
使用OleDbCommand填充数据集:
SELECT ItemName as Name,ItemPicture as Picture...
并将其设置为GridView的源代码,但遗憾的是,它只是在网格中写出了超链接:
1.jpg#1.jpg#
而不是显示图片。
你会怎么做?
答案 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>