天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

  一.準備升級數據綁定控件

  即使ASP.NET1.1版本的一些控件也都已經支持數據源控件了,如Repeater,BaseDataList等.但本身這些對象并不是從BaseDataBoundControl和DataBoundControl等類繼承下來的,如Repeater其是從Control下繼承的一個模板控件,其并不需要這么多從WebControl繼承下來的屬性,如果你想讓它支持數據源控件,你首先會想到改變控件基類,從DataBoundControl開始,這是一個好想法,但可能有些情況下并不允許這么做。上次說到了BaseDataList和DataBoundControl,BaseDataList也支持數據源控件了,所以我認為從此類繼承是完全沒有問題的。另外的做法就是在不改變原有控件基類的情況下,你還是需要老老實實給原控件添加一些代碼支持數據源控件。那么就開始吧。

  二.具體實現

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

  1.定義基本成員

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

  (1)

/// <summary>
/// 該值指示控件是否已經初始化
/// </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>
/// 為數據綁定控件提供數據源
/// </summary>
public IEnumerable DataSource
{
get
{
return dataSource;
}
set
{
if ((value is IEnumerable) || (value is IListSource) || (value == null))
dataSource
= value;
else
throw new Exception("錯誤的數據源類型");
OnDataPropertyChanged();
}
}

/// <summary>
/// 數據源控件的 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>
/// 獲取是否設置 DataSourceID 屬性的值
/// </summary>
protected bool IsBoundUsingDataSourceID
{
get
{
return (DataSourceID.Length > 0);
}
}

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

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

NET技術asp.net控件開發基礎(21),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 2017天天拍天天拍香蕉视频 | yin荡体育课羞耻play双性 | 无码中文字幕热热久久 | 久久午夜一区二区 | 戳女人屁股流水羞羞漫画 | 扒开女人下面使劲桶动态图 | 毛片免费在线播放 | 做暧暧免费30秒体验 | 老湿影院色情a | 夫妻性姿势真人做视频 | www.欧美与曽交性video | 老师的蕾丝小内内湿透了 | 性绞姿始动作动态图 | 日韩精品一区二区三区AV在线观看 | 嗯好舒服嗯好大好猛好爽 | 鞋奴的视频VK | 漂亮的保姆3集电影免费观看中文 | 日日噜噜大屁股熟妇 | 肉蒲团从国内封禁到日本成经典 | 亚洲色综合狠狠综合区 | 成人精品亚洲 | 男男h啪肉np文总受 男男h开荤粗肉h文1v1 | 阿v天堂2017在无码 | 97午夜理论片影院在线播放 | 免费A级毛片无码鲁大师 | 曰产无码久久久久久精品 | 国精产品砖一区二区三区糖心 | 久久AV亚洲精品一区无码网 | 99久久精品国产交换 | 久久成人免费观看全部免费 | 噜噜噜狠狠夜夜躁精品 | 找老女人泻火对白自拍 | 欧美双拳极限扩张 | 538视频这里只有精品 | 熟妇少妇任你躁在线无码 | 在教室伦流澡到高潮HNP视频 | 精品一区二区三区在线成人 | 色橹橹欧美在线观看视频高清 | 国产成人精品免费视频大 | 在线播放成人无码日 | 色欲AV无码乱码精品国产 |