哪些对象可以作为数据控件的数据源
2010-09-06 21:27
656 查看
使用数据绑定若干年了,总结一下哪些对象可以作为数据控件的数据源,以下文字来源于微软的MSDN。
使用 DataSource 属性指定要绑定到数据列表控件的值的源。数据源必须是实现 System.Collections.IEnumerable 接口(例如 System.Data.DataView、System.Collections.ArrayList 或 System.Collections.Hashtable)或 IListSource 接口的对象,才能绑定到从 BaseDataList 类派生的控件。在设置 DataSource 属性时,必须手动编写代码才能执行数据绑定。
如果由 DataSource 属性指定的数据源包含多个数据的源,请使用 DataMember 属性指定要绑定到该控件的特定的源。例如,如果有包含多个表的 System.Data.DataSet 对象,必须指定要绑定到控件的表。指定了数据源后,使用 DataBind 方法将数据源绑定到控件。
从上面的文字中,我们可以知道哪些对象可以作为数据源了,但是对于初学者来说是比较晦涩的,现在根据自己使用的经验解释一下:
我们经常使用的对象:DataSet,DataTable,DataView,这些都没有问题,它们均实现了接口:IListSource或IEnumerable,而且微软已经为我们做了很好的封装,在使用时基本上不用考虑太多,甚至不需要知道它们分别实现了什么接口(如果想知道就从MSDN中查一下吧)。
问题就在于如果我们使用泛型List的时候呢?它也是实现了IEnumerable接口,但是大家会想到,List中放置任何对象都可以作为数据源吗?我们来看下面的代码:
class Student
{
public Student(string n, string s)
{
name = n;
sex = s;
}
public string name;
public string sex;
}
那么下面的绑定可以成功吗?
List<Student> list = new List<Student>();
list.Add(new Student("河北","1"));
list.Add(new Student(“北京", "2"));
gridview1.DataSource = list;
gridview1.DataBind();
执行时会得到如下错误信息:
ID 为“gridview1”的 GridView 的数据源没有任何可用来生成列的属性或特性。请确保您的数据源有内容。
这是怎么回事呢?难道List不能作为GridView的数据源?错了!
我们将类定义代码修改如下:
class Student
{
public Student(string n, string s)
{
name = n;
sex = s;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
}
再执行没有问题了。
大家在使用存放自定义类的List时,一定要注意自定义类中务必要包含要绑定的信息---公开的属性。
使用 DataSource 属性指定要绑定到数据列表控件的值的源。数据源必须是实现 System.Collections.IEnumerable 接口(例如 System.Data.DataView、System.Collections.ArrayList 或 System.Collections.Hashtable)或 IListSource 接口的对象,才能绑定到从 BaseDataList 类派生的控件。在设置 DataSource 属性时,必须手动编写代码才能执行数据绑定。
如果由 DataSource 属性指定的数据源包含多个数据的源,请使用 DataMember 属性指定要绑定到该控件的特定的源。例如,如果有包含多个表的 System.Data.DataSet 对象,必须指定要绑定到控件的表。指定了数据源后,使用 DataBind 方法将数据源绑定到控件。
从上面的文字中,我们可以知道哪些对象可以作为数据源了,但是对于初学者来说是比较晦涩的,现在根据自己使用的经验解释一下:
我们经常使用的对象:DataSet,DataTable,DataView,这些都没有问题,它们均实现了接口:IListSource或IEnumerable,而且微软已经为我们做了很好的封装,在使用时基本上不用考虑太多,甚至不需要知道它们分别实现了什么接口(如果想知道就从MSDN中查一下吧)。
问题就在于如果我们使用泛型List的时候呢?它也是实现了IEnumerable接口,但是大家会想到,List中放置任何对象都可以作为数据源吗?我们来看下面的代码:
class Student
{
public Student(string n, string s)
{
name = n;
sex = s;
}
public string name;
public string sex;
}
那么下面的绑定可以成功吗?
List<Student> list = new List<Student>();
list.Add(new Student("河北","1"));
list.Add(new Student(“北京", "2"));
gridview1.DataSource = list;
gridview1.DataBind();
执行时会得到如下错误信息:
ID 为“gridview1”的 GridView 的数据源没有任何可用来生成列的属性或特性。请确保您的数据源有内容。
这是怎么回事呢?难道List不能作为GridView的数据源?错了!
我们将类定义代码修改如下:
class Student
{
public Student(string n, string s)
{
name = n;
sex = s;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string sex;
public string Sex
{
get { return sex; }
set { sex = value; }
}
}
再执行没有问题了。
大家在使用存放自定义类的List时,一定要注意自定义类中务必要包含要绑定的信息---公开的属性。
相关文章推荐
- 哪些对象可以作为数据控件的数据源
- ASP.NET基础教程-DataList数据列表控件-利用DataReader对象作为DataList对象的数据源
- 可达性分析算法中,哪些对象可以作为GC Roots
- 数据绑定(五)使用集合对象作为列表控件的ItemsSource
- Demo: Dictionary>> 泛型读取XML文件数据作为数据源(DataSource)绑定到DropDownList控件 定义个一个公用类
- ng-options将数据对象作为数据源
- Request作为域对象存取数据 Request作为域对象;请求转发和重定向都可以完成页面跳转
- HashMap中的key可以是任意对象或数据类型吗
- 第六周(项目二)——对象作为数据成员。
- 给girdview添加数据、并简单分页(使用datatable作为数据源)
- ASP.NET 2.0 的数据源、数据绑定控件概述与区别
- 第六周项目2-对象作为数据成员
- json对象load到表单中,这样后台Ajax过来的数据就可以直接加载
- 【独立游戏】作为独立开发者,有哪些可以分享的经验?
- Javascript 表单验证对象控件 + ajax简单验证重复项与ajax提交数据
- 第五周项目:对象作为数据成员
- 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source
- OWC控件使用XML数据源展现数据
- jQuery对象和DOM对象使用说明,需要的朋友可以参考下。 1.jQuery对象和DOM对象 第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQue
- RDLC 2010设计器的数据源无法找到静态类作为数据源