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

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

  本篇繼續上篇的討論,可能大家已經在使用ASP.NET2.0了,DataSource屬性不再使用,而是跟數據源控件搭配使用.現在討論的綁定技術都是基于1.1版本,先熟悉一下,本質上是一樣的,這樣一步步的學習.對以后絕對有幫助.因為當你使用數據源控件,只需要設置一個DataSourceID,方便的同時你是否知道數據源控件幫你做了什么事情,如果你想覺的夠用了,可以不用了解,但我相信你一定會有需求。上篇最后說過了,討論還剛剛開始,我們大致把核心的方法都寫出來了.下面我們繼續。

  一.控件對比

  我們可以使用上篇制作的TemplatedList控件跟內置控件做一下對比異同。在2.0未到來的時候,我們只有Repeater,DataList,DataGrid,現在我們也根據這三個控件進行討論,下面把TemplatedList與DataList進行對比

  (1)布局樣式沒DataList多...

  (2)模板沒DataList多...

  (3)TemplatedList沒ItemCollection

  (4)TemplatedList沒有預定義Command事件(如EditCommand,UpdateCommand等)

  或者還有更多的,上面的都是次要的,布局上面我們可以改善,我們也可以添加ItemCollection,也可以預定義Command事件,但發現TemplatedList跟內置的綁定控件有幾個跟數據操作嚴重的不同點

  (1)DataSource屬性類型不同  IEnumerable和Object

  為什么要將其類型設置為Object呢?

  IEnumerable支持Array,ArrayList等返回類型,但卻不支持DataSet類型,這是一個很嚴重的問題,設置其類型為Object,可以讓控件支持更廣泛的數據源(當然也要根據需求)這個是本次討論的重點

  (2)DataMember 

  其用于指定數據源的特定表,由于DataSet的介入,其可能含有多個表,所以也就有了這個屬性,否則的話就不需要他

  (3)DataKeyField鍵字段

  由于預定義Command事件的介入,實現對數據的操作,DataKeyField用于幫助數據特定記錄的操作

  二.確定目標

  根據上面的對比,我們已經知道接下來要做什么了,要讓控件DataSouce屬性支持更多的數據源(只要還是DataSet)

  本次的demo我們將要模仿Repeater來制作,為什么不用TemplatedList?因為這樣我們可以對更多控件的實現更加的熟悉,這樣在使用內置控件的時候,你將明白的更透徹.此處的demo來自Building ASP.NET Server Controls書中的例子

  Repeater與TemplatedList的異同

  不同點

  大家都知道Repeater可以靈活的進行布局,所以去掉了模板樣式屬性,我們為其添加了多個模板屬性,Repeater控件沒有預定義Command事件,所以不需要DataKeyField屬性.還為Repeater定義了TemplatedListmy沒有的ItemCollection集合,當然也可以為TemplatedList添加這個集合最大的不同。Repeater支持DataSet,TemplatedList不支持。

  相同點

  都是數據綁定控件,所以里面很多的實現方法幾乎相同,如果你看過TemplatedList的實現,再看Repeater的代碼,基本沒有難度,Repeater的實現比TemplatedList還要簡單。

  好了,下面我們開始吧.

  三.實現

  1.為數據控件做好準備

  幾乎跟上篇一樣,所以不再介紹

  2.編寫Repeater

  (1)定義成員屬性和事件

private object dataSource;
/// <summary>
/// 綁定的列表的數據源
/// </summary>
[Category("Data"), Description("綁定的列表的數據源"),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
DefaultValue(
null), Bindable(true)]
public object DataSource
{
get
{
return dataSource;
}
set
{
if ((value is IEnumerable) || (value is IListSource) || (value == null))
dataSource
= value;
else
throw new Exception("錯誤的數據源類型");
}
}

/// <summary>
/// 當數據綁定到列表數據源時要提取的數據成員
/// </summary>
[Category("Data"), Description("當數據綁定到列表數據源時要提取的數據成員")]
public virtual string DataMember
{
get
{
object member = ViewState["DataMember"];
if (member == null)
return string.Empty;
else
return (string)member;
}
set
{
ViewState[
"DataMember"] = value;
}
}

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

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

主站蜘蛛池模板: 9966在线观看免费高清电影 | 久久亚洲电影www电影网 | 国产精品系列在线观看 | 思思re热免费精品视频66 | 亚洲精品AV中文字幕在线 | 久久学生精品国产自在拍 | 久久婷婷五月综合色精品首页 | 精品亚洲欧美中文字幕在线看 | 国产高清精品国语特黄A片 国产高清国内精品福利色噜噜 | 无人区大片中文字幕在线 | 欧美伦理片第7页 | 一本道的mv中文字幕 | 亚洲日韩国产成网站在线 | 无人视频在线观看免费播放影院 | 九色PORNY丨视频入口 | 一一本之道高清视频在线观看中文字幕 | 国产一区二区免费在线观看 | 十分钟免费观看高清视频大全 | 成人在免费视频手机观看网站 | 91免费永久在线地址 | 青草在线观看视频 | 69国产精品成人无码视频 | 午夜国产高清精品一区免费 | 亚洲无碼网站观看 | 久久热在线视频精品 | 97人摸人人澡人人人超一碰 | 99香蕉精品视频在线观看 | 丰满的美女射精动态图 | 99re8热视频这在线视频 | 亚洲国产日韩a精品乱码 | adc我们的永久网址 adc网址在线观看 | 性色香蕉AV久久久天天网 | XXXchinese国产HD | 天美传媒MV高清免费看 | 久久久久国产一级毛片高清片 | 亚洲国语在线视频手机在线 | 亚洲色噜噜狠狠站欲八 | 久久99视频免费 | 亚洲高清国产拍精品5g | 久久中文字幕无码A片不卡 久久中文字幕人妻熟AV女蜜柚M | 天堂Av亚洲欧美日韩国产综合 |