图像的维护
把图像插入到数据库的表中仅仅是数据库管理的一个方面。另外,用户还需要删除或者编辑数据,甚至定位一幅图像。所以,我们要用ASP.NET来构造一个界面,使其允许用户编辑图像的数据,删除图像,添加新的图像,以及用用户输入的搜索字符串来定位一幅图像。这个界面将利用一个DataGrid来显示单条的数据库记录。DataGrid的每一行将包括以下内容:
ID:在数据库的表中,每幅图像都被赋予一个独一无二的整数值。
Name:当被插入时每图片都被赋予一个名称。它是从上传控件中获取的,所以它是包含了图像被插入之前所在路径的文件名。
Type:与图像所关联的图像类型。
Size:用字节计算的图像的大小。
Description:用户所输入的图像的描述信息。
Image:实际的图像在DataGrid以一个比较小的比例(取决于图像本身)来显示。这可以被认为是一个图像索引(宽50像素、高40像素)。
Buttons:“编辑”与“删除”按钮对于每条记录都是可用的。当编辑按钮被点中之后,“更新”与“取消”按钮将出现在“编辑”按钮的位置。“更新”按钮使本次所做的变更操作永久化并退出“编辑”模式。“取消”按钮忽略掉所有的变更操作并退出“编辑”模式。
除此之外,在DataGrid上面的Add New Image按钮允许用户向数据库中添加一幅新的图像。另外,搜索按钮和一个文本框允许用户搜索数据库。当点击搜索按钮时,将使用文本框中输入的搜索字符串来匹配纪录的名称或者描述信息。
列表A包括了这一页所讲内容的VB.NET代码。列表B包括了与之等价的C#代码。下面有一些关于这些代码的注意事项:
DataGrid的OnEditCommand属性将它的Edit命令(EditCommandColumn)与指定的子程序联系起来。这与用OnCancelCommand来取消一次编辑操作,用OnUpdateCommand来保存编辑的改变以及用OnDeleteCommand来删除单独的一行是相同的。
asp:BoundColumn元素将DataGrid中的列和与之对应的数据集合中的具体列联系起来。DataField属性指定了与之对应的列。
ASP.NET的Button控件使得搜索和添加一个新数据项更容易。控件的OnClick属性允许你为它指定一个子程序,当按钮被点击的时候子程序将被执行。
DoSearch子程序搜索数据库中在Description或者Name字段里含有搜索字符串的所有记录。匹配的行将被显示在DataGrid中。ClearSearch方法将重新载入包含所有数据的DataGrid并清空搜索文本框。
BindDataSet方法处理将数据导入到DataGrid中的实际操作,并且接受一个搜索字符串。如果传入的搜索字符串为孔,T-SQL语句将被设定为从数据库表中导入所有行。否则,搜索字符串将被用来创建T-SQL语句以定位所有匹配的记录并将它们显示在DataGrid中。
你可能注意到了Add Image按钮将用户重定向到一个名为AddImage.aspx的页面。
这是上周的文章中将图像加入到数据库的那个页面。而且,DataGrid中的图像一列使用了一个名为DisplayImage.aspx的页面。简单说来,这个页面从数据库的表中读入一幅图像并将其显示出来。它将图像的id作为querystring id变量来定位图像在表中的位置。列表C包括了这个页面的VB.NET代码。
除此之外,贯穿整个应用程序,这个页面都可以被重用以使用数据库中存储的图像:
〈asp:Image Width="50" Height="40"?ImageUrl= 〈%# ImageLink(DataBinder.Eval(Container.
DataItem, "ID")) %〉 Runat=server /〉
你还需要包含ImageLink子程序。
Function ImageLink(strArgument) as String
Return ("displayImageVB.aspx?id=" & strArgument)
End Function
不足之处
和大部分