C#數據綁定控件中的DataSource屬性淺談


使用該屬性指定用來填充Repeater控件的數據源。DataSource可以是任何System.Collections.IEnumerable對象, 如用於訪問數據庫的System.Data.DataView、System.Collections.ArrayList、System.Collections.Hashtable、數組或IListSource對象

有的時候,你在編程進入一定階段,進一步提升很困難的境況之下,不妨回過頭來看看基礎的東西,或許你會有新的受益,或許能夠真正的體會到孔夫子所謂的“溫故而知新”的真正內涵。
常用的C#數據綁定控件有:Repeater、DataList、GridView、DetailsView等,在這里我拿Repeater來簡單說明問題。
使用該屬性指定用來填充Repeater控件的數據源。DataSource可以是任何System.Collections.IEnumerable對象,
如用於訪問數據庫的System.Data.DataView、System.Collections.ArrayList、System.Collections.Hashtable、數組或IListSource對象。
常用的數據源:
一個DataTable
一個DataView
一個DataSet
任何實現IListSource接口的組件
任何實現IList接口的組件
注意:
若要綁定到對象的強類型數組,該對象類型必須包含公共屬性。
下面通過幾個簡單的實例來介紹DataSource的具體應用。
<1>綁定DataTable,一般都是從數據庫取出數據,然后直接進行綁定,具體的數據庫操作的邏輯不再提供。想必大家都已經非常熟悉。綁定DataView與這個類似。
程序代碼

 

復制代碼代碼如下:

privatevoidBindData()  
{  
//通過業務邏輯,直接調用數據庫中的數據  
DataTablenTable=getTable();  

Repeater1.DataSource=nTable;  
Repeater1.DataBind();  

 

HTML代碼
C#數據綁定控件程序代碼

復制代碼代碼如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
<HeaderTemplate> 
<table> 
<tr> 
<thscopethscope="col"> 
姓名th> 
<th> 
年齡th> 
<tr> 
<HeaderTemplate> 
<ItemTemplate> 
<tr> 
<td> 
<%#Eval("Key")%> 
<td> 
<td> 
<%#Eval("value")%> 
<td> 
<tr> 
<ItemTemplate> 
<FooterTemplate> 
<table><FooterTemplate> 
<asp:Repeater> 

 

<2>綁定Array、ArrayList、List、一維數組之類,里面存儲簡單的數據。
ArrayList
C#數據綁定控件程序代碼

復制代碼代碼如下:

privatevoidBindData()  
{  
ArrayListlist=newArrayList();  
list.Add("Jim");  
list.Add("Tom");  
list.Add("Bluce");  
list.Add("Mary");  

Repeater1.DataSource=list;  
Repeater1.DataBind();  

HTML適當改變
程序代碼
復制代碼代碼如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
<HeaderTemplate><table><tr><thscopethscope="col">姓名<th><tr><HeaderTemplate> 
<ItemTemplate><tr><td><%#Container.DataItem%><td><tr><ItemTemplate> 
<FooterTemplate><table><FooterTemplate> 
<asp:Repeater> 

<3>綁定Dictionary、HashTable
Dictionary
C#數據綁定控件程序代碼
復制代碼代碼如下:

privatevoidBindData()  
{  
Dictionary<string,int>dic=newDictionary<string,int>();  
dic.Add("Jim",21);  
dic.Add("Tom",26);  
dic.Add("Bluce",33);  
dic.Add("Mary",18);  

Repeater1.DataSource=dic;  
Repeater1.DataBind();  

HTML代碼
程序代碼
復制代碼代碼如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
<HeaderTemplate><table><tr><thscopethscope="col">姓名<th><th>年齡<th><tr><HeaderTemplate> 
<ItemTemplate><tr><td><%#Eval("Key")%>td><td><%#Eval("value")%><td><tr><ItemTemplate> 
<FooterTemplate><table><FooterTemplate> 
<asp:Repeater>

<4>綁定對象集合,IList等。這個很是有用,在我們進行數據查詢的時候,經常從數據庫取出數據,為了方便操作,需要封裝成對象,但是有的時候需要將這些對象以列表的形式顯示出來,一種解決方案:對象轉換為DataTable,另一種就是直接調用數據庫。這兩種方案,並不是很理想。而這里直接將對象集合直接綁定到數據顯示控件,給我指明一條出路。其實,在PetShop4.0就是利用這一點,綁定ICollection或者IList。簡單明了。
一個簡單的用戶類,包含兩個公共屬性。
程序代碼
復制代碼代碼如下:

usingSystem;  
usingSystem.Data;  

///

///SummarydescriptionforUser  
///

publicclassUser  
{  
privatestring_Name;  
publicstringName  
{  
get{return_Name;}  
set{_Name=value;}  
}  
privateint_Age;  
publicintAge  
{  
get{return_Age;}  
set{_Age=value;}  
}  
publicUser()  
{  
//  
//TODO:Addconstructorlogichere  
//  
}  
publicUser(stringname,intage)  
{  
_Name=name;  
_Age=age;  
}  
}

 

 


綁定對象集合:
IList
程序代碼
復制代碼代碼如下:

privatevoidBindData()  
{  
Useruser1=newUser("Jim",21);  
Useruser2=newUser("Tom",23);  
Useruser3=newUser("Bluce",33);  
Useruser4=newUser("Mary",18);  

IList<User>list=newList<User>();  
list.Add(user1);  
list.Add(user2);  
list.Add(user3);  
list.Add(user4);  

Repeater1.DataSource=list;  
Repeater1.DataBind();  

對應的Repeater綁定對象的公共屬性:
C#數據綁定控件程序代碼
復制代碼代碼如下:

<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
<HeaderTemplate> 
<table> 
<tr> 
<thscopethscope="col"> 
姓名th> 
<th> 
年齡<th> 
<tr> 
<HeaderTemplate> 
<ItemTemplate> 
<tr> 
<td> 
<%#Eval("Name")%> 
<td> 
<td> 
<%#Eval("Age")%> 
<td> 
<tr> 
<ItemTemplate> 
<FooterTemplate> 
<table><FooterTemplate> 
<asp:Repeater> 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM