程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> asp.net控件開發基礎(23)

asp.net控件開發基礎(23)

編輯:關於ASP.NET

上一篇討論了如何實現一個簡單的數據源控件,但還沒有完全的實現.這次我們具體的實現一些方法來加強數據源控件的功能.這裡我們根據SqlDataSource控件的一些功能來實現.

本篇示例源碼來自Professional ASP.NET2.0 ServerControl and Component Development,即是模仿SqlDataSource而制作.我把控件功能減弱,代碼整理了下,我們只關注重要的部分,一步一步上去.

一.概念

1.首先你必須熟悉ADO.NET的使用,然後抽象出一部分屬性和方法,如執行sql語句命令類型,這個屬性你便可以抽象出來,當是控件功能的一部分.所以這部分代碼不再列出,大家仔細看就會明白了.

2.數據操作注意事項

(1)數據前後操作事件,我們見過SqlDataSource的數據前後操作事件,如讀取數據,前後事件則是Selecting和Selected

假設getData方法是讀取數據庫,那麼寫成代碼就是這樣

protected override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)
    {
      SqlDataSourceSelectingEventArgs e = new SqlDataSourceSelectingEventArgs(com, arguments);
      //嘗試數據檢索操作前引發 Selecting 事件
      OnSelecting(e);
      return getData();
      SqlDataSourceStatusEventArgs ee = new SqlDataSourceStatusEventArgs(com, -1, null);
      //嘗試數據檢索操作後引發 Selecting 事件
      OnSelected(ee);
    }

其他數據操作也一樣

(2)自動重新綁定

讀取數據是基本的,不存在對數據庫的更改,當對數據進行增,刪,改時.數據發生了變化,以前我們則是手動進行重新綁定,現在也是,只不過方式變了而已.DataSourceView中存在OnDataSourceViewChanged 方法,我們只需要調用這個方法引發DataSourceViewChanged事件通知數據發生了變化,就會幫你自動重新綁定了,即除了讀取數據以外的其他數據操作都需要調用這個方法.假設是刪除操作,則代碼如下

protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues)
    {
      SqlDataSourceCommandEventArgs e = new SqlDataSourceCommandEventArgs(com);
      OnDeleting(e);
      affectedRows = com.ExecuteNonQuery();
      OnDataSourceViewChanged(EventArgs.Empty);
      SqlDataSourceStatusEventArgs ee = new SqlDataSourceStatusEventArgs(com, affectedRows, exception);
      OnDeleted(ee);
      return affectedRows;
    }

(3)Can屬性

指定能否進行數據操作,讀取數據默認可以,其他的操作可以在方法開始部分加上如下代碼,假設是不支持刪除操作

protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues)
    {
      if (!CanDelete)
        throw new NotSupportedException("不支持刪除操作");
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved