Skip to main content

BindingSource

在编写一个小工具的时候需要将一个自定义的集合绑定到DataGridView。DataGridView是.net 2.0中新的一个网格控件。DataGridView的功能非常的强大,我在使用中确遇到一个小小的问题。
我自定的集合如下:
public class CustomClassCollection : System.Collections.Generic.List<CustomClass>
{
}

CustomClass本身是有两个String类型的属性(Propertie)。我在WinForm的构造函数里面:

CustomClassCollection ccl = new CustomClassCollection();
dataGridView.DataSource = ccl;

虽然还没有数据,但是在DataGridView里面已经显出2个Title,即CustomClass的那2个属性,然后却遇到的个问题:我通过一个button Click事件向ccl里添加了东西,却没有找到DataGrid里面的DataBind()事件,而且dataGridView并没有自动的更新。DataGridView的Refresh()似乎和更新数据也没有关系。
在网上查找资料,找到BindingSource这个类。只需要,先将cll Bind到BindingSource上,再将BindingSource作为数据源Bind到DataGridView。向cll添加数据以后调用BindingSource的ResetBindings()就可以更新DataGridView:
先声明一个BindingSource:

BindingSource bs = new BindingSource();

再调用:

bs.DataSource = ccl;
dataGridView.DataSource = bs;

在添加数据的方法的最后调用:

bs.ResetBindings(false);


Key Word: DataGridView BindingSource 数据同步 更新

Comments

Anonymous said…
thankx a lot.
confusing me for 2 days for this problem, but solove by your article.
greets.

Popular posts from this blog

PSP 三国无双 大蛇传 人物图片

PSP三国无双 大蛇传 人物图片(Google Picasa相册) 现在还不全,太多了。。。(2008-03-23) 搞完了,体力活啊。(2008-04-20) 暂时放弃吧,那个空间到期很久了,忘了更新这里了。什么时候找到地方放再跟新。(2009-04-29) 上传到Google Picasa(2009-09-25)

使用Google Chrome开发版或是beta版

Google的Chrome是个非常不错的浏览器,界面简洁,javascript执行速度非常快(完全体会不到,对我来说瓶颈是网速,相对常用firefox来说js速度方面到没什么很明显的提升),但是功能还是有限。一般常用的都是稳定版,但是为了体验最新的进步不少人也有安装beta版的,为了体验最新最新的改变还以安装开发版的(相比beta可能更不稳定,bug更多)。现在有了 Google Chrome Channel Changer , 就可以随时在3个版本之间换来换去。 选好版本,点击“Update”就可以关闭这个Channel Changer了。然后再去你的chrome中选择“About Google Chrome”,就会自动的检查下载安装新版本。提示安装完成后重启一下chrome就行了。 用了1个月左右的chrome,还是换回firefox,最小字体是个问题,字体平滑也完全没用,看惯雅黑,点阵字体完全看不惯哦。