熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET 2.0高級數據處理之處理控件事件

2013-11-13 10:16:18  來源: .NET編程 
在前面的部分中你已經看到了幾個數據控件事件的例子數據控件的事件都是在頁面執行生命周期的適當時候提供給你供你插入自定義代碼的一般情況下在某種特定的操作發生之前和之後數據控件都會暴露事件在某種操作之前調用的事件的名稱一般帶有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 在對象銷毀之前引發

  某種操作之後引發的事件用於編寫自定義代碼來響應特定的操作或檢查操作的成功/失敗狀態例如你可以檢查UpdateInsert或Delete操作的RowsAffected或檢查Exception屬性以確定在處理過程中是否發生了異常你還可以設置事件參數的ExceptionHandled屬性以防止異常顯示在控件或頁面上下面的例子演示了GridView和SqlDataSource的多個事件處理代碼以及引發這些事件的相關次序

<script runat=server

Protected Sub GridView_RowEditing(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewEditEventArgs)
  用戶在只讀模式中點擊編輯按鈕的時候引發
 ResponseWrite(Row editing)

  如果GridView已經處於編輯模式就終止編輯操作
 If Not GridViewEditIndex = Then
  eCancel = True
 End If
End Sub

Protected Sub GridView_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs)
當用戶在編輯模式中點擊更新按鈕的時候引發
 ResponseWrite(GridView: Row updating<br/>)
 
 此處可以選擇終止事件例如不允許用戶更新數據
 If UserIsInRole(Restricted) Then
  eCancel = True
 End If
End Sub

Protected Sub GridView_RowUpdated(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdatedEventArgs)
  當更新操作完成所時候引發
 ResponseWrite(GridView: Row updated<br/>)

 If Not eException Is Nothing Then
   此處可以執行自定義的錯誤處理完成之後設置ExceptionHandled = true
  eExceptionHandled = True
 End If
  可以檢測更新操作所影響的行數
 ResponseWrite(<br />Affected rows: & ServerHtmlEncode(eAffectedRows))
End Sub

Protected Sub GridView_RowCancelingEdit(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewCancelEditEventArgs)
  當用戶在編輯模式中點擊取消按鈕的時候引發
 ResponseWrite(Edit canceled)
End Sub

Protected Sub SqlDataSource_Updated(ByVal sender As Object ByVal e As SystemWebUIWebControlsSqlDataSourceStatusEventArgs)
  當更新操作完成之後引發
 ResponseWrite(SqlDataSource: Update complete<br />)
End Sub

Protected Sub SqlDataSource_Updating(ByVal sender As Object ByVal e As SystemWebUIWebControlsSqlDataSourceCommandEventArgs)
  調用更新操作的時候引發
 ResponseWrite(SqlDataSource: Updating)
End Sub
</script>
  下面一個例子演示了一種更特殊的DetailsView的Inserting事件處理情形它從DetailsView 的FileUpload控件中獲取照片文件在DetailsView完成插入操作(在數據庫為該照片文件插入一條記錄)之前把該照片的內容保存到磁盤上為了演示的目的實際的文件保存代碼都被注釋了你可以自己試驗一下

Protected Sub DetailsView_ItemInserting(ByVal sender As Object ByVal e As SystemWebUIWebControlsDetailsViewInsertEventArgs)
 Dim f As FileUpload = DetailsViewFindControl(FileUpload)
 If fHasFile Then
   保存文件
 End If
End Sub
  與上面的例子類似下面的例子演示了FormView的ItemDeleted事件當照片的數據庫記錄被刪除的時候它把相關的照片文件從磁盤上刪除同樣刪除文件的代碼也被注釋了

Protected Sub FormView_ItemDeleted(ByVal sender As Object ByVal e As SystemWebUIWebControlsFormViewDeletedEventArgs)
 If (eException Is Nothing) Then
   刪除文件
  ResponseRedirect(eValues(AlbumID))
 End If
End Sub
From:http://tw.wingwit.com/Article/program/net/201311/13124.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.