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

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

編輯:關於ASP.NET

本篇繼續上篇的討論,可能大家已經在使用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. 下一頁:
Copyright © 程式師世界 All Rights Reserved