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