C#数据绑定控件中的DataSource属性

开发 后端
C#数据绑定控件,都有DataSource属性,用于指定数据源。通常情况下,也是比较常用的就是数据源是数据表(DataTable),其实DataSource的范围很广,我们可以在深入研究的同时,改善我们的程序。

有的时候,你在编程进入一定阶段,进一步提升很困难的境况之下,不妨回过头来看看基础的东西,或许你会有新的受益,或许能够真正的体会到孔夫子所谓的“温故而知新”的真正内涵。

常用的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与这个类似。

程序代码

  1. privatevoidBindData()  
  2. {  
  3. //通过业务逻辑,直接调用数据库中的数据  
  4. DataTablenTable=getTable();  
  5.  
  6. Repeater1.DataSource=nTable;  
  7. Repeater1.DataBind();  

HTML代码

C#数据绑定控件程序代码

  1. <asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
  2. <HeaderTemplate> 
  3. <table> 
  4. <tr> 
  5. <thscopethscope="col"> 
  6. 姓名th> 
  7. <th> 
  8. 年龄th> 
  9. tr> 
  10. HeaderTemplate> 
  11. <ItemTemplate> 
  12. <tr> 
  13. <td> 
  14. <%#Eval("Key")%> 
  15. td> 
  16. <td> 
  17. <%#Eval("value")%> 
  18. td> 
  19. tr> 
  20. ItemTemplate> 
  21. <FooterTemplate> 
  22. table>FooterTemplate> 
  23. asp:Repeater> 

<2>绑定Array、ArrayList、List、一维数组之类,里面存储简单的数据。

ArrayList

C#数据绑定控件程序代码

  1. privatevoidBindData()  
  2. {  
  3. ArrayListlist=newArrayList();  
  4. list.Add("Jim");  
  5. list.Add("Tom");  
  6. list.Add("Bluce");  
  7. list.Add("Mary");  
  8.  
  9. Repeater1.DataSource=list;  
  10. Repeater1.DataBind();  

HTML适当改变

程序代码

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

<3>绑定Dictionary、HashTable

Dictionary

C#数据绑定控件程序代码

  1. privatevoidBindData()  
  2. {  
  3. Dictionary<string,int>dic=newDictionary<string,int>();  
  4. dic.Add("Jim",21);  
  5. dic.Add("Tom",26);  
  6. dic.Add("Bluce",33);  
  7. dic.Add("Mary",18);  
  8.  
  9. Repeater1.DataSource=dic;  
  10. Repeater1.DataBind();  

HTML代码

程序代码

  1. <asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
  2. <HeaderTemplate><table><tr><thscopethscope="col">姓名th><th>年龄th>tr>HeaderTemplate> 
  3. <ItemTemplate><tr><td><%#Eval("Key")%>td><td><%#Eval("value")%>td>tr>ItemTemplate> 
  4. <FooterTemplate>table>FooterTemplate> 
  5. asp:Repeater> 

<4>绑定对象集合,IList等。这个很是有用,在我们进行数据查询的时候,经常从数据库取出数据,为了方便操作,需要封装成对象,但是有的时候需要将这些对象以列表的形式显示出来,一种解决方案:对象转换为DataTable,另一种就是直接调用数据库。这两种方案,并不是很理想。而这里直接将对象集合直接绑定到数据显示控件,给我指明一条出路。其实,在PetShop4.0就是利用这一点,绑定ICollection或者IList。简单明了。

一个简单的用户类,包含两个公共属性。

程序代码

  1. usingSystem;  
  2. usingSystem.Data;  
  3.  
  4. ///  
  5. ///SummarydescriptionforUser  
  6. ///
  7.  
  8. publicclassUser  
  9. {  
  10. privatestring_Name;  
  11. publicstringName  
  12. {  
  13. get{return_Name;}  
  14. set{_Name=value;}  
  15. }  
  16. privateint_Age;  
  17. publicintAge  
  18. {  
  19. get{return_Age;}  
  20. set{_Age=value;}  
  21. }  
  22. publicUser()  
  23. {  
  24. //  
  25. //TODO:Addconstructorlogichere  
  26. //  
  27. }  
  28. publicUser(stringname,intage)  
  29. {  
  30. _Name=name;  
  31. _Age=age;  
  32. }  

绑定对象集合:

IList

程序代码

  1. privatevoidBindData()  
  2. {  
  3. Useruser1=newUser("Jim",21);  
  4. Useruser2=newUser("Tom",23);  
  5. Useruser3=newUser("Bluce",33);  
  6. Useruser4=newUser("Mary",18);  
  7.  
  8. IList<User>list=newList<User>();  
  9. list.Add(user1);  
  10. list.Add(user2);  
  11. list.Add(user3);  
  12. list.Add(user4);  
  13.  
  14. Repeater1.DataSource=list;  
  15. Repeater1.DataBind();  

对应的Repeater绑定对象的公共属性:

C#数据绑定控件程序代码

  1. <asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server"> 
  2. <HeaderTemplate> 
  3. <table> 
  4. <tr> 
  5. <thscopethscope="col"> 
  6. 姓名th> 
  7. <th> 
  8. 年龄th> 
  9. tr> 
  10. HeaderTemplate> 
  11. <ItemTemplate> 
  12. <tr> 
  13. <td> 
  14. <%#Eval("Name")%> 
  15. td> 
  16. <td> 
  17. <%#Eval("Age")%> 
  18. td> 
  19. tr> 
  20. ItemTemplate> 
  21. <FooterTemplate> 
  22. table>FooterTemplate> 
  23. asp:Repeater> 

【编辑推荐】

  1. C#结构体构造函数的应用
  2. C#结构体定义的详解
  3. C#的结构体使用实例浅析
  4. C#结构体变量学习浅谈
  5. 解析C#结构体指针
责任编辑:彭凡 来源: 百度空间
相关推荐

2009-08-21 15:57:58

C# DataSour

2009-08-10 16:47:45

Visual C#数据

2009-09-15 15:14:27

C# 绑定

2009-09-11 12:17:59

C#控件属性

2011-05-20 16:07:29

C#

2009-09-15 15:40:25

C# 绑定

2009-08-03 14:42:50

C#自定义控件

2009-09-01 17:41:45

C# HelpAttr

2009-08-24 16:39:19

C# 泛型应用

2009-09-17 17:13:54

C#数组

2009-08-19 11:21:02

C# ListBox控

2009-08-24 11:23:41

C# TimeLabe

2009-08-11 14:45:41

C# DataGrid

2009-08-18 17:41:22

C# ListView

2009-09-11 13:03:48

Scope属性

2009-08-11 15:46:15

C#日历控件

2009-08-26 17:28:48

C# DateTime

2009-09-11 11:33:58

C# WinForm控Attribute

2009-08-19 16:56:45

C#和ADO.NET

2009-08-26 16:46:06

C# ThreadSt
点赞
收藏

51CTO技术栈公众号