数据绑定控件的datasource数据绑定的几种不同方式

来源:互联网 发布:淘宝千里眼要钱吗 编辑:程序博客网 时间:2024/06/05 10:23

     数据绑定控件,都有DataSource属性,用于指定数据源。通常情况下,也是比较常用的就是数据源是数据表(DataTable),其实DataSource的范围很广,我们可以在深入研究的同时,改善我们的程序。
  
    有的时候,你在编程进入一定阶段,进一步提升很困难的境况之下,不妨回过头来看看基础的东西,或许你会有新的受益,或许能够真正的体会到孔夫子所谓的“温故而知新”的真正内涵。
  
   常用的数据绑定控件有: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与这个类似。
  
  Code
   private void BindData()
   {
   //通过业务逻辑,直接调用数据库中的数据
   DataTable nTable = getTable();
  
   Repeater1.DataSource = nTable;
   Repeater1.DataBind();
   }
   Html代码
  
  
   <asp:Repeater ID="Repeater1" runat="server">
   <HeaderTemplate>
   <table>
   <tr>
   <th scope="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
   private void BindData()
   {
   ArrayList list = new ArrayList();
   list.Add("Jim");
   list.Add("Tom");
   list.Add("Bluce");
   list.Add("Mary");
  
   Repeater1.DataSource = list;
   Repeater1.DataBind();
   }
  
  
  Html适当改变
  
  
   <asp:Repeater ID="Repeater1" runat="server">
   <HeaderTemplate><table><tr><th scope="col">姓名</th></tr></HeaderTemplate>
   <ItemTemplate><tr><td><%#Container.DataItem %></td></tr></ItemTemplate>
   <FooterTemplate></table></FooterTemplate>
   </asp:Repeater>
  
  
  <3>绑定Dictionary、HashTable
  
  Dictionary
   private void BindData()
   {
   Dictionary<string, int> dic = new Dictionary<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:Repeater ID="Repeater1" runat="server">
   <HeaderTemplate><table><tr><th scope="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。简单明了。
  
  一个简单的用户类,包含两个公共属性。
  
  
  using System;
  using System.Data;
  
  /// <summary>
  /// Summary description for User
  /// </summary>
  public class User
  {
   private string _Name;
   public string Name
   {
   get { return _Name; }
   set { _Name = value; }
   }
   private int _Age;
   public int Age
   {
   get { return _Age; }
   set { _Age = value; }
   }
   public User()
   {
   //
   // TODO: Add constructor logic here
   //
   }
   public User(string name,int age)
   {
   _Name = name;
   _Age = age;
   }
  }
  
  
  绑定对象集合:
  
  IList
   private void BindData()
   {
   User user1 = new User("Jim", 21);
   User user2 = new User("Tom",23);
   User user3 = new User("Bluce",33);
   User user4 = new User("Mary",18);
  
   IList<User> list = new List<User>();
   list.Add(user1);
   list.Add(user2);
   list.Add(user3);
   list.Add(user4);
  
  
   Repeater1.DataSource = list;
   Repeater1.DataBind();
   }
  
  
  对应的Repeater绑定对象的公共属性:
  
  
  <asp:Repeater ID="Repeater1" runat="server">
   <HeaderTemplate>
   <table>
   <tr>
   <th scope="col">
   姓名</th>
   <th>
   年龄</th>
   </tr>
   </HeaderTemplate>
   <ItemTemplate>
   <tr>
   <td>
   <%#Eval("Name") %>
   </td>
   <td>
   <%#Eval("Age") %>
   </td>
   </tr>
   </ItemTemplate>
   <FooterTemplate>
   </table></FooterTemplate>
   </asp:Repeater>

 

    转自酷网动力。

原创粉丝点击