最近用C#作Windows项目,DataGrid用起来真不爽,出现一个问题,虽然不影响使用,但是很难看。DataGrid绑定数据源后,使用DataGridTextBoxColumn显示,若选中某行某列,改变数据源后(使用DataView的RowFilter来过滤达到的目的),选中的那行那列并不刷新,也就是显示的还是刚才的值,只有点击一下DataGrid后,才会正确显示,这个如何解决??

解决方案 »

  1.   

    朋友我也遇到一个和你差不多一样的问题!
    我也是如果将选中单元格的数据修改后马上使用this.ds.HasChanges()查找修改的数据,就会找不到!必须要先点DATAGRID中另一行才可以检查到有数据已经修改。最郁闷的是如果我将this.ds.HasChanges()放在一个BUTTEN事件中,就马上能找到数据已经修改,但是我放在toolBar1_ButtonClick事件中,就出现上边是说的问题有高手能帮帮忙说说为什么吗????
      

  2.   

    在重新绑定数据源时先调用 this.dataGrid1.UnSelect() 取消选择行应该就可以了吧。
      

  3.   

    楼主:
    经没试:
    this.dataGrid1.DataSource = this.dataSet11.WEB_Topic.DefaultView; this.dataSet11.WEB_Topic.DefaultView.RowFilter = "id>10";
    this.dataGrid1.Focus();
    可以,不需要点击
    别外,你也可以使用datatable.select()方法同实现你想要的结果,而且不需 要this.datagrid1.Focus()语句//-------------------------------------------------------------------
    一楼问题可以这样解决
    this.BindingContext[ds,"table"].EndCurrentEdit();