ASP.NET 2.0数据教程之五十七:编辑和删除现有的二进制数据
uo;刷新列和主键” ,选择No,因为选择Yes将会把我们自己定制的任何列覆盖掉。
现在, ObjectDataSource控件将包含DeleteMethod属性和对应的DeleteParameter参数 。我们记得在以前的教程提到过,当使用向导指定方法时,Visual Studio会自动的将ObjectDataSource控件的OldValuesParameterFormatString属 性设置为original_{0},这将导致更新和删除时出现问题。为此,要么将清除该 属性,要么将其设置为默认的{0}值。对该属性的更详细讨论见教程16《概述插入 、更新和删除数据》 完成后,ObjectDataSource控件的声明代码看起来应 该像下面的一样:
设置完ObjectDataSource后, 就可以启用GridView的删除功能了,方法是点击其智能标签里的“删除选项 ”。这将使GridView增加一个CommandField,其ShowDeleteButton属性为 true。 图5:启用GridView控件的删除功能 花几分钟测试删除功能。由 于表Products和表Categories之间有一个外键CategoryID,当你删除现有的8个类 中的任何一个时,你会得到一个外键约束冲突异常。为顺利的实现测试,我们需 要添加一个附带图片和说明小册子的新类,如图6所示,小册子为Test.pdf,图7 为添加了测试类的GridView控件界面。 图6:添加一个附带Brochure和Image文件的测试类 图7:添加测试类后,显示在GridView控件里 在Visual Studio 里刷新解决资源管理器,你会在文件夹~/Brochures里看到Test.pdf文件(见图8 ) 下一步,点击Test类的Delete链接,页面回传,引发CategoriesBLL的 DeleteCategory 方法,该方法又调用DAL层的Delete方法,向数据库发送适当的 DELETE命令。最后数据重新绑定到GridView控件,Test类将不再显示出来。 虽然已经成功地将Test类从Categories表删除,但存储在文件系统的对应 小册子仍旧存在,刷新解决资源管理器,你将发现Test.pdf依然放在~/Brochures 文件夹里。 图8:Test.pdf文件并没有从文件系统删除 第5步:删除残存的 Brochure文件 未将二进制数据存储进数据库时面临的一个问题便是:当删 除一条数据库记录时,我们需要另外采取步骤来删除该记录对应的二进制数据文 件。当执行delete命令时,会发生一些事前事件和事后事件(pre- and post- action events),我们需要创建对应的事件处理器。在Categories表的记录被删 除之前,我们需要确定对应PDF文件的路径,但在删除记录之前我们不会删除其对 应的PDF文件,以防发生异常或记录最终未被删除的情况。 从事件发生的 时间先后顺序来看,GridView控件的RowDeleting事件在调用ObjectDataSource控 件的delete命令前发生;而RowDeleted事件在调用ObjectD |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |