将访问数据库中的图像挖掘到网格视图中
Mining an image out of an acess database into a GridView
我正在构建一个支持 Microsoft Access 数据库的 ASP.Net Web 应用程序。在数据库中,我有一个名为 items
的 table。其中一列是 image
- 这是项目的视觉表示,它是数据库计算机上图像的超 link。
我有两个问题:
首先,这是一个糟糕的设计吗?您愿意将图像本身保存在数据库中吗?如果是,你会怎么做?
第二个问题是,如何在 gridView 中表示以这种方式保存的图像?
我在 C# 中尝试了以下内容;
用 OleDb 命令填充数据集:
SELECT ItemName as Name,ItemPicture as Picture...
并将其设置为GridView的源,但遗憾的是,它只是在网格中写出了hyperlink:
1.jpg#1.jpg#
而不是显示图像。
你会怎么做?
Is this a bad design
一般来说,不会。
关于在数据库中将图像存储为 BLOB 与使用 OS 文件系统的主题有很多白皮书。您必须进行研究以确定哪个适合您。但鉴于您使用的是 Access,我会避免将图像存储在数据库中,因为 Access 对数据库的整体文件大小有 2GB 的上限。图片可以很快填满。
假设图像字段是关联文件的相对路径,您所要做的就是将 ImageField
添加到 Gridview
并将图像 URL 字段绑定到DataImageURLField
属性.
<asp:ImageField DataImageUrlField='<%# Bind("Picture") %>'></asp:ImageField>
这假定您的 ItemPicture 字段包含类似于以下的字符串:“/images/1.jpg”。如果图像字段实际上是一个超链接(html <a>
标记),那么您可以将 TemplateField
添加到 Gridview 并在 ItemTemplate 中添加一个 ` 控件并类似地绑定它:
<asp:TemplateField>
<EditItemTemplate>
</EditItemTemplate>
<ItemTemplate>
<asp:Literal ID="Literal1" runat="server" Text='<%# Bind("Picture") %>'
</ItemTemplate>
<asp:TemplateField>
我正在构建一个支持 Microsoft Access 数据库的 ASP.Net Web 应用程序。在数据库中,我有一个名为 items
的 table。其中一列是 image
- 这是项目的视觉表示,它是数据库计算机上图像的超 link。
我有两个问题:
首先,这是一个糟糕的设计吗?您愿意将图像本身保存在数据库中吗?如果是,你会怎么做?
第二个问题是,如何在 gridView 中表示以这种方式保存的图像?
我在 C# 中尝试了以下内容;
用 OleDb 命令填充数据集:
SELECT ItemName as Name,ItemPicture as Picture...
并将其设置为GridView的源,但遗憾的是,它只是在网格中写出了hyperlink:
1.jpg#1.jpg#
而不是显示图像。
你会怎么做?
Is this a bad design
一般来说,不会。
关于在数据库中将图像存储为 BLOB 与使用 OS 文件系统的主题有很多白皮书。您必须进行研究以确定哪个适合您。但鉴于您使用的是 Access,我会避免将图像存储在数据库中,因为 Access 对数据库的整体文件大小有 2GB 的上限。图片可以很快填满。
假设图像字段是关联文件的相对路径,您所要做的就是将 ImageField
添加到 Gridview
并将图像 URL 字段绑定到DataImageURLField
属性.
<asp:ImageField DataImageUrlField='<%# Bind("Picture") %>'></asp:ImageField>
这假定您的 ItemPicture 字段包含类似于以下的字符串:“/images/1.jpg”。如果图像字段实际上是一个超链接(html <a>
标记),那么您可以将 TemplateField
添加到 Gridview 并在 ItemTemplate 中添加一个 ` 控件并类似地绑定它:
<asp:TemplateField>
<EditItemTemplate>
</EditItemTemplate>
<ItemTemplate>
<asp:Literal ID="Literal1" runat="server" Text='<%# Bind("Picture") %>'
</ItemTemplate>
<asp:TemplateField>