zoukankan      html  css  js  c++  java
  • 数据绑定控件DataSource属性

    数据绑定控件,都有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代码

    Repeater<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
    <stringint> dic = new Dictionary<stringint>();
            dic.Add(
    "Jim"21);
            dic.Add(
    "Tom"26);
            dic.Add(
    "Bluce"33);
            dic.Add(
    "Mary"18);

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

    Html代码

    Code<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;
        }
    }

    绑定对象集合: 


        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>
  • 相关阅读:
    python uuid
    linux 修改时区
    Nginx 缓存命中率
    MongoDB oplog 详解
    MongoDB 复本集搭建
    复制集简介
    解决Python2.7的UnicodeEncodeError: 'ascii' codec can't encode异常错误
    MongoDB 介绍
    python virtualenv
    Docker Compose 模板文件 V2
  • 原文地址:https://www.cnblogs.com/top5/p/1721630.html
Copyright © 2011-2022 走看看