首頁  >  文章  >  後端開發  >  C#資料綁定控制項中的DataSource屬性淺談

C#資料綁定控制項中的DataSource屬性淺談

黄舟
黄舟原創
2017-01-19 11:15:342130瀏覽

有的時候,你在編程進入一定階段,進一步提升很困難的境況之下,不妨回過頭來看看基礎的東西,或許你會有新的受益,或許能夠真正的體會到孔夫子所謂的“溫故而知新」的真正內涵。
常用的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的具體應用。
綁定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>

綁定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>

綁定Dictionary、HashTable
Dictionary
C#資料綁定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();    
}

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

程式碼

<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>

綁定物件集合:
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;  
}  
}

對應的Repeater綁定物件的公有屬性:
C#資料綁定控制項程式碼

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();    
}
屬性淺談的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn