C#数据绑定控件中的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与这个类似。
程序代码
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#数据绑定控件程序代码
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: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>
<4>绑定对象集合,IList等。这个很是有用,在我们进行数据查询的时候,经常从数据库取出数据,为了方便操作,需要封装成对象,但是有的时候需要将这些对象以列表的形式显示出来,一种解决方案:对象转换为DataTable,另一种就是直接调用数据库。这两种方案,并不是很理想。而这里直接将对象集合直接绑定到数据显示控件,给我指明一条出路。其实,在PetShop4.0就是利用这一点,绑定ICollection或者IList。简单明了。
一个简单的用户类,包含两个公共属性。
程序代码
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;
}
}
绑定对象集合:
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绑定对象的公共属性:
C#数据绑定控件程序代码
<asp:RepeaterIDasp:RepeaterID="Repeater1"runat="server">
<HeaderTemplate>
<table>
<tr>
<thscopethscope="col">
姓名th>
<th>
年龄<th>
<tr>
<HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("Name")%>
<td>
<td>
<%#Eval("Age")%>
<td>
<tr>
<ItemTemplate>
<FooterTemplate>
<table><FooterTemplate>
<asp:Repeater>
相关文章
C# ComboBox控件“设置 DataSource 属性后无法修改项集合”的完美解决方法
这篇文章主要介绍了C# ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决方法,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25使用asp.net的pageDataSource中时索引问题解决方法
当前页面在数据的除第一页的任何一个页面时,重新条件查询并且是新条件的总页数小于刚才查询得到的页码时,就会出现“索引 20 不是为负数,就是大于行数”的类似的错误...2021-09-22在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据
在前面的教程里,我们用ObjectDataSource控件充分的将表现层和数据访问层(DAL)分开来。在这篇教程里我们看看怎样在一个表现层和数据访问层区分的不是很严格的简单程序中使用SqlDataSource控件。...2021-09-22asp.net Repeater分页实例(PageDataSource的使用)
Asp.net提供了三个功能强大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分页功能。相对DataGrid,DataList和Repeater控件具有更高的样式自定义性,所以很多时候我们喜欢使用DataList或Repeater控件来显示数据...2021-09-22在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更新、删除数据
本文主要介绍使用SqlDataSource控件完成插入、更新、删除数据等操作,通过设置向导,SqlDataSource控件的InsertCommand, UpdateCommand和DeleteCommand属性都会被赋以相应的 INSERT, UPDATE和DELETE SQL语句,从而实现相应的操作。...2021-09-22gridview+objectdatasource+aspnetpager整合实例
gridview+objectdatasource+aspnetpager整合实例,需要的朋友可以参考一下...2021-09-22SpringBoot默认使用HikariDataSource数据源方式
这篇文章主要介绍了SpringBoot默认使用HikariDataSource数据源方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-02在ASP.NET 2.0中操作数据之四:使用ObjectDataSource展现数据
前面介绍搭建基础的架构,下面我们来介绍ASP.NET中,如何利用ObjectDataSource来展现数据。通过配置ObjectDataSource,我们指定这些底层的对象,还有这些对象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。...2021-09-22asp.net中使用repeater和PageDataSource搭配实现分页代码
asp.net中使用repeater和PageDataSource搭配实现分页代码,需要的朋友可以参考下...2021-09-22- 使用该属性指定用来填充Repeater控件的数据源。DataSource可以是任何System.Collections.IEnumerable对象,如用于访问数据库的System.Data.DataView、System.Collections.ArrayList、System.Collections.Hashtable、数组或IListSource对象...2021-09-22
aspx中的mysql操作类sqldatasource使用示例分享
服务器装了mysql odbc驱动,想在那个iis上操作另一个服务器的mysql,找到个.net的sqldatasource类可以操作mysql,下在把使用方法分享一下...2021-09-22ASP.NET中 ObjectDataSource控件的DataObjectTypeName属性
本文主要介绍ObjectDataSource控件和DataObjectTypeName属性的用法,希望能给小伙伴们一些帮助。...2021-09-22在ASP.NET 2.0中操作数据之六:编程设置ObjectDataSource的参数值
本文主要介绍在ObjectDataSource控件的Selecting事件中,设置InputParameters参数,配合业务层的查询方法,以达到查询不同数据的目的。...2021-09-22ASP.NET中的Menu控件的应用及XmlDataSource的了解
以前一直以为菜单都是通过sitemap制作的,最近看到项目中的方法是使用XmlDataSource榜定的,很是好奇,于是研究了一下,感觉还不错哦,感兴趣的朋友也可以了解下啊,或许本文所提供的对你学习有所帮助呢...2021-09-22Asp.net中使用PageDataSource分页实现代码
这篇文章主要介绍asp.net中使用PageDataSource分页的方法,需要的朋友可以参考下...2021-09-22