.net数据源控件绑定mysql_数据源控件与数据绑定控件的进一步简单讨论(1)
簡單的說,DataSource數據源控件是一個抽象的數據庫,可以在該數據庫里進行數據的操作(Select,Delete,Update和Insert)。數據源控件通過控件的DataSourceID和具有綁定功能的數據源控件(例如GridView)聯系起來,下面是DataSource控件的定義:
public abstract class DataSourceControl : Control, IDataSource, IlistSource
可以看到,DataSourceControl除了實現IlistSource接口外,還需要實現IdataSource接口,因為該控件需要完成兩個功能:
1)傳統的具有DataGrid的數據綁定控件。
2)ASP.NET2.0新增的具有聲明性的數據綁定功能。
由于上面兩個功能的支持,這就是本書在介紹綁定控件時提到的為什么可以通過兩種方式綁定數據源的原因。
下面是DataSource控件提供的幾個重要方法與說明。
方法
說明
DataBind
將數據源綁定到被調用的服務器控件及其所有子控件。(從Control繼承。)
DataBindChildren
將數據源綁定到服務器控件的子控件。
GetView
獲取與數據源控件關聯的命名的數據源視圖。
GetViewNames
獲取名稱的集合,表示與DataSourceControl控件關聯的DataSourceView對象的列表。
DataSource控件本身很簡單,因為所有的邏輯操作都是由DataSourceView類來完成。作為最為基本要求,DataSource必須能夠從基礎數據庫里檢索數據(也就是必須執行Select),而對于數據的編輯(例如Insert,Update和Delete)則是可選的。
和數據庫實體類似,數據庫可以包含多個視圖,同樣DataSource控件可以認為是一個數據容器,它可以包含一個或者多個DataSourceView,每一個DataSourceView必須具有唯一個視圖名稱以便彼此區分。例如DataSource控件可能提供過濾的數據視圖,同時還可以提供排序后的數據視圖。那么數據綁定控件如GridView又怎么區分每一個視圖呢?
對于數據綁定控件提供了DataMember屬性,該屬性可以設置為DataSourceView視圖的值。注意:如果您沒有明確指出數據視圖的名稱,系統將使用默認的名稱視圖。
現在我們看看DataSourceVIew提供了哪些成員?如下所示:
public string Name { get; }
public virtual bool CanDelete { get; }
public virtual bool CanInsert { get; }
public virtual bool CanPage { get; }
public virtual bool CanRetrieveTotalRowCount { get; }
public virtual bool CanSort { get; }
public virtual bool CanUpdate { get; }
protected EventHandlerList Events { get; }
這里需要注意兩點:
正如上面我們說過,DataSourceVIew可以提供多個視圖,所以利用Name屬性,我們就可以獲取每一個視圖的名稱。其次,對于CanXXX方法,您可以看到它具并沒有CanSelect屬性,這是因為CanSelect是必須的,而CanXXX默認值則是false。
如果我們需要自定義DataSourceView,例如我們向利用自定義的DataSourceView來從基礎數據Web Service獲取數據源,那么我們就可以利用CanXXX屬性來執行邏輯操作。
DataSourceView控件有一個事件:該實現的定義如下:
public event EventHandler DataSourceViewChanged;
該事件在基礎數據庫里的數據改變時觸發,而該事件的觸發會進一步執行數據綁定,進而刷新數據綁定控件的數據顯示
當自定義DataSOurceView控件時,我們需要捕捉IDataSource接口的DataSourceChanged事件,以便更新DataSourceView,并繼而觸發DataSourceViewChanged
DataSourceView同樣還提供了下面的方法來執行數據操作
public virtual void Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback);
public virtual void Insert(IDictionary values, DataSourceViewOperationCallback callback);
public virtual void Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback);
public virtual void Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback);
protected internal abstract IEnumerable ExecuteSelect(DataSourceSelectArguments arguments);
protected virtual int ExecuteInsert(IDictionary values);
protected virtual int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues);
protected virtual int ExecuteDelete(IDictionary keys, IDictionary oldValues);
protected virtual void OnDataSourceViewChanged(EventArgs e);
protected internal virtual void RaiseUnsupportedCapabilityError(DataSourceCapabilities capability);
這些方法的前四個可以在數據綁定中執行Select,Insert,Delete和Update操作。這而默認命名方式是ExecuteXXX命名的方法可以支持異步調用,ExecuteInsert, ExecuteUpdate和ExecuteDelete并不是抽象方法是因為這些方法可以執行Select的運行結果,所有對它的直接調用將拋出NotSupportedException異常。
總結
以上是生活随笔為你收集整理的.net数据源控件绑定mysql_数据源控件与数据绑定控件的进一步简单讨论(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lcd残影原理_为什么同样是高刷,OLE
- 下一篇: laravel swoole mysql