ASP.NET入门教程 6.6 取消事件[1]
到目前为止您在本章中己经看到了触发单个事件的控件 Button和ImageButton控件都能触发Click事件 而其他控件则会触发其他事件 您可能已经注意到每个控件都有多个可以触发的事件 但可能没有意识到单个操作可能会触发多个事件 例如 在更新数据的时候会触发Updating和Updated两个事件 与此类似 在添加新数据时会触发Insertin盯nserted事件对 而在删除数据时会触发Deleting/Deleted事件对 现在时事件(例如Inserting)在操作执行时触发 而过去时事件(例如Deleted)在事件执行之后触发 例如 在删除一行数据的时候 Deleting事件在数据删除之前触发 而Deleted事件在数据删除后再触发
对于有些事件 由于它们在实际操作执行之前触发 这就使得您有机会取消事件 例如 考虑EditSquad aspx文件 球队老板可以在这里修改球队成员 一件老板需要确保的事情是任何在赛季中离开的球员都必须保存在数据库中 所以在 月 号到次年 月 号之间不能删除球员的数据 为了实现这个功能 需要允许删除球员 但时间不能在赛季内 下面的 试一试 练习实现这个功能
( )在Visual Web Developer中打开EditSquad aspx文件 并在页面的最后添加一个Label控件
( )将该Label控件的ID设置为Message 并清除它的Text属性
( )打开该页面的代码文件并为DetailsDataSource控件的Deleting事件创建一个空白的事件过程 可以使用代码文件编辑器顶部的下拉菜单进行创建 就像在处理间接事件的 试一试 练习中所做的那样
( )在空白的事件过程中 添加如下代码
Dim today As DateTime = DateTime Now()
Dim startYear As Integer
Dim endYear As Integer
Dim seasonStart As DateTime
Dim seasonEnd As DateTime
If today Month > Then
startYear = today Year
endYear = today Year +
Else
startYear = today Year
endYear = today Year
End If
seasonStart = New DateTime(startYear ) th August
seasonEnd = New DateTime(endYear ) st May
If today >= seasonStart And today <= seasonEnd Then
e Cancel = True
Message Text = Cannot delete players during the season
Else
GridView DataBind()
Message Text =
End If
( )保存该文件并从右键菜单中选择View in Browsera
( )确保 系统的日期处于 月 号与次年 月 号之间
( )选择一个球员并试着删除他 将看到一条消息显示在赛季期间不能删除球员 同时球员也没有被删除
( )将系统时间修改到赛季后 也就是在 月 号到 月 号之间
( )选择一个球员并试着删除他 为了不删除真实的球员数据 可以先插入一个球员再删除他
ASP NET 入门教程完整版
lishixinzhi/Article/program/net/201311/14658