首页 新闻 会员 周边 捐助

实现IList 数据绑定

0
悬赏园豆:100 [已解决问题] 解决于 2011-02-17 12:27

如何实现IList  接口, 在DataGridView中数据绑定

如何让 列名与DataGridView中的DataPropertyName对应

问题补充: 一个实现IList接口的类,用于直接绑定数据 不是List<> 用IList实现一个虚列表
王二麻子的主页 王二麻子 | 初学一级 | 园豆:43
提问于:2010-12-27 15:53
< >
分享
最佳答案
0

楼主是想自己写一个控件?

收获园豆:25
顾晓北 | 专家六级 |园豆:10898 | 2010-12-27 16:11
不是写控件,就是写一个自定义的数据类,DataGridView.DataSource=自定义类
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 16:36
那你这个类继承这个接口不就行了?然后vs会自动提示你把里面的方法全部实现,然后你实现了就行了啊。。。
顾晓北 | 园豆:10898 (专家六级) | 2010-12-27 16:39
我理解有问题?是不是动态绑定啊?
大河 | 园豆:215 (菜鸟二级) | 2010-12-27 16:41
但是怎么把 name列和DataGridView 中的DataPropertyName=name对应呢
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 16:42
类中存储数据的是HashTable,用别的好像不能做到通用
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 16:43
这个应该不是你能管到的地方吧?
顾晓北 | 园豆:10898 (专家六级) | 2010-12-27 16:48
前提:DataGridView不自动生成列 一般我们绑定数据,比如用List <DataEntity> 那么列名一般都是DataEntity的属性名 在DataGridView中设置DataPropertyName=属性名 然后把DataSource=List <DataEntity> 这样数据自动就会分配到每个列上 怎么做才能让实现了IList的类也有这样的功能 或者说 IList中哪个东西决定了这个功能?
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 16:49
应该可以的 好像看到过
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 16:51
我觉得这是DataGridView里面设置的东西,所以你在你自己的类中是管不到这个地方的。
顾晓北 | 园豆:10898 (专家六级) | 2010-12-27 16:54
List<>不是也是显示IList接口吗?List<>都可以 为什么自己实现IList就不可以呢
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 16:56
我想到一个东西,你实现IList<T>这个接口的时候会提示你这个T要是一个具体类,我想应该是在这个类中定义的属性前面加诸如[Default(trud)]之类这样的东西,有个名词叫XX属性(忘了,嘿嘿)你查查看是不是需要这样。。
顾晓北 | 园豆:10898 (专家六级) | 2010-12-27 16:59
恩,我先看看,谢谢 顾晓北 还有 大河
王二麻子 | 园豆:43 (初学一级) | 2010-12-27 17:01
其他回答(6)
0

class MyList : IList<User> {

  private List<User> list = new List<User>();

  public void Add(User user) {

    list.Add(user);

  }

  //其他方法

}

MyList users = new MyList();

users.Add(user1);

users.Add(user2);

dataGridView.DataSource = users;

 

这样有问题?

收获园豆:15
Gray Zhang | 园豆:17610 (专家六级) | 2010-12-27 18:23
0

如果你是想让GridView自己绑定字段,那你看看是不是AutoGenerateColumns这个属性.如果你实现了IList,那你所说的DataPropertyName=name这个问题你就不用考虑了,这是数据绑定的问题.你只要在GridView的模板里设置好,再调用GridView.DataBind()就OK了.

收获园豆:15
I,Robot | 园豆:9783 (大侠五级) | 2010-12-27 20:49
0

在你自定义的类T里面的每个属性上面加上System.ComponentModel.DisplayName属性,然后将IList<T>做数据绑定应该可以实现,例如:

[System.ComponentModel.DisplayName("名称")]

public string Name{get;set;}

另外System.ComponentModel里面还提供了许多其他的属性设置,LZ可以自己研究下

收获园豆:15
七月霄雨 | 园豆:1282 (小虾三级) | 2010-12-27 21:38
额.这个完全就不是一回事么
支持(0) 反对(0) 王二麻子 | 园豆:43 (初学一级) | 2010-12-28 13:34
0

要实现同list<>一样的功能必须要实现两个接口吧。

收获园豆:15
massinger | 园豆:706 (小虾三级) | 2010-12-28 08:49
具体说说~~
支持(0) 反对(0) 王二麻子 | 园豆:43 (初学一级) | 2010-12-28 13:34
http://blog.sina.com.cn/s/blog_6335f2890100gwqs.html 这里有详细介绍
支持(0) 反对(0) massinger | 园豆:706 (小虾三级) | 2010-12-30 09:25
0

可以参考:CYQ.Data 轻量数据层之路 框架开源系列 索引 在最下面的原理篇里,

有几篇文章是讲MDataTable是如何实现绑定到控件的,只要看懂,基本你的问题也解决了。

收获园豆:15
路过秋天 | 园豆:4787 (老鸟四级) | 2011-01-08 19:47
0

LZ这么多人跟帖了,你的分也该给了,

其实用数据绑定不一定非要用DataGridView,你也可以试试Repeater数据绑定,还有datalist!!!

fytz_2011 | 园豆:155 (初学一级) | 2011-01-17 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册