ITPUB??ì3
ITPUB论坛 » Web开发 » ASP.NET与AJAX » ASP.NET 2.0高级数据处理之处理控件事件

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: [转载] ASP.NET 2.0高级数据处理之处理控件事件
离线 马甲走江湖
江湖任我行


精华贴数 4
个人空间 70
技术积分 19686 (47)
社区积分 26183 (42)
注册日期 2006-10-26
论坛徽章:151
现任管理团队成员金牌徽章银牌徽章铜牌徽章2008欧洲杯之星欧洲冠军杯纪念徽章
2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:蹦床体育版块博采纪念徽章2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:排球

发表于 2007-1-22 08:10 
ASP.NET 2.0高级数据处理之处理控件事件

在前面的部分中,你已经看到了几个数据控件事件的例子。数据控件的事件都是在页面执行生命周期的适当时候提供给你,供你插入自定义代码的。一般情况下,在某种特定的操作发生之前和之后,数据控件都会暴露事件。在某种操作之前调用的事件的名称一般带有-ing后缀,而在某种操作之后调用的事件的名称一般带有-ed后缀。例如,GridView所支持的事件包括:

  · PageIndexChanging和PageIndexChanged - 在分页操作之前和之后引发

  · SelectedIndexChanging和SelectedIndexChanged - 在选择操作发生之前和之后引发

  · Sorting和Sorted - 在排序操作之前和之后引发

  · RowEditing和RowCancelingEdit - 在数据行进入编辑模式之前或编辑模式被终止之前引发

  · RowUpdating和RowUpdated - 在更新操作之前和之后引发

  · RowDeleting和RowDeleted - 在删除操作之前和之后引发

  · RowDataBound - 当数据行进行数据绑定的时候引发

  · RowCreated - 当建立了数据行并显示的时候引发

  · RowCommand - 调用内部控件的按钮命令的时候引发

  数据源控件也暴露了一些事件,与数据绑定控件的事件类似。SqlDataSource和ObjectDataSource控件都支持下面一些事件:

  · Selecting和Selected - 在选择操作之前和之后引发

  · Updating和Updated - 在更新操作之前和之后引发

  · Deleting和Deleted - 在删除操作之前和之后引发

  · Inserting和Inserted - 在插入操作之前和之后引发

  · Filtering - 在过滤器操作发生之前引发

  当ObjectDataSource控件的TypeName属性所指定的对象建立或销毁的时候,它还提供了额外的事件。你可以通过设置随事件参数传递的ObjectInstance属性,在ObjectCreating事件中设置自定义的对象。

  · ObjectCreating和ObjectCreated - 在对象被建立之前和之后引发

  · ObjectDisposing - 在对象销毁之前引发

  某种操作之后引发的事件用于编写自定义代码来响应特定的操作,或检查操作的成功/失败状态。例如,你可以检查Update、Insert或Delete操作的RowsAffected,或检查Exception属性以确定在处理过程中是否发生了异常。你还可以设置事件参数的ExceptionHandled属性以防止异常显示在控件或页面上。下面的例子演示了GridView和SqlDataSource的多个事件处理代码,以及引发这些事件的相关次序。

<script runat="server">

Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs)
 ' 用户在只读模式中点击"编辑"按钮的时候引发
 Response.Write("Row editing..."

 ' 如果GridView已经处于编辑模式,就终止编辑操作
 If Not GridView1.EditIndex = -1 Then
  e.Cancel = True
 End If
End Sub

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs)
' 当用户在编辑模式中点击"更新"按钮的时候引发
 Response.Write("GridView: Row updating...<br/>"
 
 '此处可以选择终止事件,例如不允许用户更新数据
 If User.IsInRole("Restricted" Then
  e.Cancel = True
 End If
End Sub

Protected Sub GridView1_RowUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs)
 ' 当更新操作完成所时候引发
 Response.Write("GridView: Row updated<br/>"

 If Not e.Exception Is Nothing Then
  ' 此处可以执行自定义的错误处理,完成之后设置ExceptionHandled = true
  e.ExceptionHandled = True
 End If
 ' 可以检测更新操作所影响的行数
 Response.Write("<br />Affected rows: " & Server.HtmlEncode(e.AffectedRows))
End Sub

Protected Sub GridView1_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs)
 ' 当用户在编辑模式中点击"取消"按钮的时候引发
 Response.Write("Edit canceled"
End Sub

Protected Sub SqlDataSource1_Updated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)
 ' 当更新操作完成之后引发
 Response.Write("SqlDataSource: Update complete<br />"
End Sub

Protected Sub SqlDataSource1_Updating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs)
 ' 调用更新操作的时候引发
 Response.Write("SqlDataSource: Updating..."
End Sub
</script>

  下面一个例子演示了一种更特殊的DetailsView的Inserting事件处理情形,它从DetailsView 的FileUpload控件中获取照片文件,在DetailsView完成插入操作(在数据库为该照片文件插入一条记录)之前,把该照片的内容保存到磁盘上。为了演示的目的,实际的文件保存代码都被注释了,你可以自己试验一下。

Protected Sub DetailsView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertEventArgs)
 Dim f As FileUpload = DetailsView1.FindControl("FileUpload1"
 If f.HasFile Then
  ' 保存文件
 End If
End Sub

  与上面的例子类似,下面的例子演示了FormView的ItemDeleted事件,当照片的数据库记录被删除的时候,它把相关的照片文件从磁盘上删除。同样,删除文件的代码也被注释了。

Protected Sub FormView1_ItemDeleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewDeletedEventArgs)
 If (e.Exception Is Nothing) Then
  ' 删除文件
  Response.Redirect(e.Values("AlbumID")
 End If
End Sub


__________________
The following programme is not suitable for children

香车圈子,欢迎您的加入
只看该作者    顶部
离线 lawer-bbc
版主


精华贴数 2
个人空间 0
技术积分 17208 (56)
社区积分 2246 (546)
注册日期 2007-1-12
论坛徽章:111
现任管理团队成员管理团队2007贡献徽章会员2007贡献徽章ITPUB新首页上线纪念徽章  
      

发表于 2007-1-22 09:41 
学习一下

────────
我现在就付诸行动
E-mail:max656798@21cn.com


__________________
If you don't know where you're going, any road will do.If you don't know where you are, a map won't help.
E-mail:max656798@21cn.com
只看该作者    顶部
离线 liujinyang
中级会员



精华贴数 0
个人空间 0
技术积分 406 (4783)
社区积分 2 (27105)
注册日期 2005-6-5
论坛徽章:0
      
      

发表于 2007-2-4 22:34 
学习,学习。。。谢谢马甲了


__________________
没有牺牲就没有获得,想要得到什么,就必须付出同等的代价。
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问