《让人郁闷的,DatagridView添加与删除行-瑞德船长-博客园》由会员分享,可在线阅读,更多相关《让人郁闷的,DatagridView添加与删除行-瑞德船长-博客园(4页珍藏版)》请在金锄头文库上搜索。
1、让人郁闷的, DatagridView添加与删除行- 瑞德船长- 博客园让人郁闷的, DatagridView添加与删除行让人郁闷的, DatagridView添加与删除行。不知有没有人用过 DatagridView 直接添加与删除行 ,在 DatagridView 上直接添加删除有时会很方便, 而且客户也喜欢。使用过 Infragistics 的 UltraGrid 的人应该知道,在UltraGrid 中删除行和添加行,只需给绑定的集合 AddNew 方法即可,删除时直接把行设为 Delete 。而 DatagridView 却用完全不同的机制。在 DatagridView 上直接调用 Ro
2、ws.Add(); ,直接添加一行发生导常 ,使用 Row.add(value), 也一样不行。异常 :Rows cannot be programmatically added to the DataGridViews rows collection when the control is data-bound.给数据源直接添加行时,界面却一动不动,稳如泰山. 跟踪,发现行集合数,没有随着数据源增加而增加。原来数据源一但给 Datagridview后,两都就实现分开管理。删除行时也有发生导常: “Rows cannot be programmatically removed un
3、less the DataGridView is data-bound to an IBindingList that supports changenotification and allows deletion.” 再使用 Invalidate 方法,界面行数没有变只是多了一行空白。反射一下 DataGridView ,让我吃了一惊: 当数据源不为空时就发生导常, DataSource 为空还要添加行干吗?我一度怀疑微软是否支持 DataGridView 添加与删除。public virtual int Add()throw newInvalidOperationExcepti
4、on(SR.GetString(DataGridViewRowCollection_AddUnboundRow);throw newInvalidOperationException(SR.GetString(DataGridView_ForbiddenOperationInEventHandler);return this.AddInternal(false, null);Google , 找来找去只有msdn2 上面几个不痛不养的结果,丝毫解决不了任何问题。看来还是要从DataBinding入手。添加一个BindingSource所有的问题都解决了。首先是把数据源设给BindingSource的数据源。然后再把 BindingSource 设给 DataGridview 的数据源。需要使用 BindingSource 中转一下才可以。一年多没有使用 DataBing 了,每天都使用包装好的控件, 也不知是好还是坏。之所以写出来,是因为花了我整整一个下午的时候,而网上又找不到相关的资料。能给碰到同样问题的人带来点帮助.posted 2006-08-29 09:43瑞德船长阅读 (10571)评论(25)编辑收藏网摘所属分类 : DotNet 2.0