快速业务通道

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
uo;刷新列和主键” ,选择No,因为选择Yes将会把我们自己定制的任何列覆盖掉。

现在, ObjectDataSource控件将包含DeleteMethod属性和对应的DeleteParameter参数

。我们记得在以前的教程提到过,当使用向导指定方法时,Visual Studio会自动的将ObjectDataSource控件的OldValuesParameterFormatString属 性设置为original_{0},这将导致更新和删除时出现问题。为此,要么将清除该 属性,要么将其设置为默认的{0}值。对该属性的更详细讨论见教程16《概述插入 、更新和删除数据》

完成后,ObjectDataSource控件的声明代码看起来应 该像下面的一样:

<asp:ObjectDataSource ID="CategoriesDataSource" runat="server"
   OldValuesParameterFormatString="{0}" SelectMethod="GetCategories"
   TypeName="CategoriesBLL" InsertMethod="InsertWithPicture"
   DeleteMethod="DeleteCategory">
   <InsertParameters>
    <asp:Parameter Name="categoryName" Type="String" />
     <asp:Parameter Name="description" Type="String" />
    <asp:Parameter Name="brochurePath" Type="String" />
     <asp:Parameter Name="picture" Type="Object" />
  </InsertParameters>
   <DeleteParameters>
    <asp:Parameter Name="categoryID" Type="Int32" />
   </DeleteParameters>
</asp:ObjectDataSource>

设置完ObjectDataSource后, 就可以启用GridView的删除功能了,方法是点击其智能标签里的“删除选项 ”。这将使GridView增加一个CommandField,其ShowDeleteButton属性为 true。

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

图5:启用GridView控件的删除功能

花几分钟测试删除功能。由 于表Products和表Categories之间有一个外键CategoryID,当你删除现有的8个类 中的任何一个时,你会得到一个外键约束冲突异常。为顺利的实现测试,我们需 要添加一个附带图片和说明小册子的新类,如图6所示,小册子为Test.pdf,图7 为添加了测试类的GridView控件界面。

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

图6:添加一个附带Brochure和Image文件的测试类

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

图7:添加测试类后,显示在GridView控件里

在Visual Studio 里刷新解决资源管理器,你会在文件夹~/Brochures里看到Test.pdf文件(见图8 )

下一步,点击Test类的Delete链接,页面回传,引发CategoriesBLL的 DeleteCategory 方法,该方法又调用DAL层的Delete方法,向数据库发送适当的 DELETE命令。最后数据重新绑定到GridView控件,Test类将不再显示出来。

虽然已经成功地将Test类从Categories表删除,但存储在文件系统的对应 小册子仍旧存在,刷新解决资源管理器,你将发现Test.pdf依然放在~/Brochures 文件夹里。

ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据

图8:Test.pdf文件并没有从文件系统删除

第5步:删除残存的 Brochure文件

未将二进制数据存储进数据库时面临的一个问题便是:当删 除一条数据库记录时,我们需要另外采取步骤来删除该记录对应的二进制数据文 件。当执行delete命令时,会发生一些事前事件和事后事件(pre- and post- action events),我们需要创建对应的事件处理器。在Categories表的记录被删 除之前,我们需要确定对应PDF文件的路径,但在删除记录之前我们不会删除其对 应的PDF文件,以防发生异常或记录最终未被删除的情况。

从事件发生的 时间先后顺序来看,GridView控件的RowDeleting事件在调用ObjectDataSource控 件的delete命令前发生;而RowDeleted事件在调用ObjectD

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号