一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

asp.net控件開(kāi)發(fā)基礎(chǔ)(21)

  上篇介紹了在ASP.NET2.0版本下面如何簡(jiǎn)單的定義數(shù)據(jù)綁定控件。雖然DataBoundControl為我們提供了便利,我們以后可以從此類開(kāi)始編寫(xiě)數(shù)據(jù)綁定控件。但是在2.0版本未到來(lái)之前,你已經(jīng)為自己訂制了一些數(shù)據(jù)綁定控件,既然2.0版本已經(jīng)提供了數(shù)據(jù)源控件,你是否有想法,讓你原有的控件也升級(jí)到同時(shí)支持通過(guò)設(shè)置DataSource屬性和數(shù)據(jù)源控件來(lái)獲取數(shù)據(jù)源,這樣以后我們就可以省省工作了。這次我們就來(lái)討論這個(gè)話題,讓舊版本的數(shù)據(jù)綁定控件支持?jǐn)?shù)據(jù)源控件。

  一.準(zhǔn)備升級(jí)數(shù)據(jù)綁定控件

  即使ASP.NET1.1版本的一些控件也都已經(jīng)支持?jǐn)?shù)據(jù)源控件了,如Repeater,BaseDataList等.但本身這些對(duì)象并不是從BaseDataBoundControl和DataBoundControl等類繼承下來(lái)的,如Repeater其是從Control下繼承的一個(gè)模板控件,其并不需要這么多從WebControl繼承下來(lái)的屬性,如果你想讓它支持?jǐn)?shù)據(jù)源控件,你首先會(huì)想到改變控件基類,從DataBoundControl開(kāi)始,這是一個(gè)好想法,但可能有些情況下并不允許這么做。上次說(shuō)到了BaseDataList和DataBoundControl,BaseDataList也支持?jǐn)?shù)據(jù)源控件了,所以我認(rèn)為從此類繼承是完全沒(méi)有問(wèn)題的。另外的做法就是在不改變?cè)锌丶惖那闆r下,你還是需要老老實(shí)實(shí)給原控件添加一些代碼支持?jǐn)?shù)據(jù)源控件。那么就開(kāi)始吧。

  二.具體實(shí)現(xiàn)

  本次例子跟上篇相同,相同地方就略過(guò)了

  1.定義基本成員

  整個(gè)控件的實(shí)現(xiàn)方式跟DataBoundControl實(shí)現(xiàn)方式很相似,我們可以看看MSDN中,BaseDataList等基類添加了哪些元素,然后模仿著實(shí)現(xiàn).如果對(duì)BaseDataBoundControl和DataBoundControl這兩個(gè)類成員了解的話,你將對(duì)下面成員屬性很熟悉,添加這些基本成員

  (1)

/// <summary>
/// 該值指示控件是否已經(jīng)初始化
/// </summary>
protected bool Initialized
{
get
{
return initialized;
}
}
public string DataMember
{
get
{
object member = ViewState["DataMember"];
if (member == null)
return string.Empty;
else
return (string)member;
}
set
{
ViewState[
"DataMember"] = value;
this.OnDataPropertyChanged();
}
}
/// <summary>
/// 為數(shù)據(jù)綁定控件提供數(shù)據(jù)源
/// </summary>
public IEnumerable DataSource
{
get
{
return dataSource;
}
set
{
if ((value is IEnumerable) || (value is IListSource) || (value == null))
dataSource
= value;
else
throw new Exception("錯(cuò)誤的數(shù)據(jù)源類型");
OnDataPropertyChanged();
}
}

/// <summary>
/// 數(shù)據(jù)源控件的 ID 屬性
/// </summary>
[DefaultValue(""), IDReferenceProperty(typeof(DataSourceControl))]
public virtual string DataSourceID
{
get
{
object dataSourceID = ViewState["DataSourceID"];
if (dataSourceID != null)
{
return (string)dataSourceID;
}
return string.Empty;
}
set
{
this.ViewState["DataSourceID"] = value;
this.OnDataPropertyChanged();
}
}

/// <summary>
/// 獲取是否設(shè)置 DataSourceID 屬性的值
/// </summary>
protected bool IsBoundUsingDataSourceID
{
get
{
return (DataSourceID.Length > 0);
}
}

/// <summary>
/// 是否需要綁定到其指定的數(shù)據(jù)源
/// </summary>
protected bool RequiresDataBinding
{
get
{
return requiresDataBinding;
}
set
{
requiresDataBinding
= value;
}
}

/// <summary>
/// 用于檢索數(shù)據(jù)的 DataSourceSelectArguments 對(duì)象。默認(rèn)為 Empty 值
/// </summary>
protected DataSourceSelectArguments SelectArguments
{
get
{
if (selectArguments == null)
{
selectArguments
= CreateDataSourceSelectArguments();
}
return selectArguments;
}
}

NET技術(shù)asp.net控件開(kāi)發(fā)基礎(chǔ)(21),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产99er66在线视频 | 最新精品视频在线观看 | 欧美激情一区二区三区在线 | 国产一级二级在线观看 | 福利视频99| 亚洲一区二区三区免费看 | 精品久久久久久蜜臂a∨ | 国产美女在线精品免费观看 | 久久亚洲一级毛片 | 伊人久综合 | 午夜精品久久久久久中宇 | 国产精品久久久久无码av | 国产女人视频免费观看 | 91精品成人免费国产片 | 97精品国产自在现线免费观看 | 亚洲性综合网 | 青青视频国产在线播放 | 综合影院| 青青自拍视频一区二区三区 | 五月天开心激情 | 四虎影视4hutv最新地址在线 | 一区二区三区美女视频 | 青青草久久伊人 | 欧美日韩亚洲一区二区三区 | 香港免费毛片 | 国模337人人本艺术150p | 精品视频久久久 | 日韩永久免费进入2015 | 国产成人综合网 | 美美女高清毛片视频免费观看 | 亚洲欧美综合另类图片小说区 | 日本一区午夜爱爱 | 成人免费网址在线 | 国产一区二区三区波多野吉衣 | 亚洲色四在线视频观看 | 久久婷婷色一区二区三区 | 久久性| 91全国探花精品正在播放 | 中文字幕日韩女同互慰视频 | 999国内精品永久免费视频 | 日韩α片 |