数据绑定控件----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
privatevoidBindData()
{
//通过业务逻辑,直接调用数据库中的数据
DataTablenTable=getTable();

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

Html代码


<asp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate>
<table>
<tr>
<thscope="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
privatevoidBindData()
{
ArrayListlist
=newArrayList();
list.Add(
"Jim");
list.Add(
"Tom");
list.Add(
"Bluce");
list.Add(
"Mary");

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

Html适当改变


<asp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate><table><tr><thscope="col">姓名</th></tr></HeaderTemplate>
<ItemTemplate><tr><td><%#Container.DataItem%></td></tr></ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>

<3>绑定Dictionary、HashTable

Dictionary
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();
}

Html代码


<asp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate><table><tr><thscope="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。简单明了。

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


usingSystem;
usingSystem.Data;

///<summary>
///SummarydescriptionforUser
///</summary>
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;
}
}

绑定对象集合:

IList
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();
}

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


<asp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate>
<table>
<tr>
<thscope="col">
姓名
</th>
<th>
年龄
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("Name")%>
</td>
<td>
<%#Eval("Age")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table></FooterTemplate>
</asp:Repeater>
优质内容筛选与推荐>>
1、SingleThread-Executton design pattern
2、回家的路
3、xDoclet在Hibernate中的使用(转)
4、NHibernate支持的数据库 NHibernate连接配置 hibernate.cfg.xml中的配置
5、人要像树一样活着


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn