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

ASP.NET控件開發基礎(22)

編輯:關於ASP.NET

上兩篇討論了如何定義結合數據源控件的數據綁定控件.這次我們一起來看下數據源控件是如何實現的。asp.net2.0已經為我們提供了很多數據源控件,相信大家都用過了,也希望大家對其有所熟悉.關於它能做什麼就不說了。下面我們也一起來看看,如何簡單的實現.

一.你必須了解的

1.關於數據源控件(DataSourceControl)

雖然表面看來,給數據綁定控件指定DataSourceID屬性,數據源控件幫你做了一切工作,其實不然,數據源控件只負責收集與數據交互的相關信息,如:SqlDataSource的ConnectionString,AccessDataSource的DataFile

收集好這些信息後交給DataView類統一處理數據,但用戶一般不與DataView類直接打交道,而是DataSourceControl,所以DataSourceControl需要獲取DataView類,從而間接的調用數據相關操作方法。

因此,.net抽象定義出了一個接口IDataSource,實現IDataSource接口的任何類都是數據源控件,

.net為我們提供了一個起點DataSourceControl類,其實現了IDataSource接口

2.數據處理(DataSourceView數據源視圖)

上面已經談到,數據源控件將相關數據傳給DataSourceView,處理數據。如SqlDataSourceView提供了相當多的數據操作,最基本的則是檢索數據,接著還有添加,更新,刪除等操作。

.net為我們提供了一個起點DataSourceView類,其中ExecuteSelect方法作為抽象方法,子類必須實現.

二.最簡單實現(示例)

什麼是最簡單實現呢?比如只提供最基本的檢索數據功能的數據源控件,這裡我們只需要實現上面兩個類的抽象方法就OK了,還是看示例吧.

(1)定義DataSourceView實現ExecuteSelect方法

public class MyDataSourceView : DataSourceView
{
   public MyDataSourceView(MyDataSourceControl owner, string name)
     : base(owner, name)
   {
   }

   protected override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)
   {
     arguments.RaiseUnsupportedCapabilitiesError(this);

     SqlConnection conn =
      new SqlConnection("Server=localhost;Database=Northwind;uid=sa;pwd=123456");
     conn.Open();

     SqlCommand cmd =
      new SqlCommand("SELECT CustomerID, ContactName, ContactTitle, CompanyName FROM Customers WHERE CustomerID LIKE '[AB]%'",
      conn);
     return (IEnumerable) cmd.ExecuteReader(CommandBehavior.CloseConnection);
   }
}

(2)定義DataSourceControl,獲取DataSourceView

public class MyDataSourceControl : DataSourceControl
{
   protected override DataSourceView GetView(string viewName)
   {
     return new MyDataSourceView(this, "");
   }
}

你可能不相信,你已經完成了一個數據源控件了,使用方法一樣,如下

<aspDemo:MyDataSourceControl ID="MyDataSourceControl1" runat="server">
</aspDemo:MyDataSourceControl>
<asp:GridView ID="GridView1" runat="server" DataSourceID="MyDataSourceControl1">
</asp:GridView>

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