none
请教dataview的刷新问题 RRS feed

  • 问题

  • 我现在遇到这样的情况

    有一个DataTable dt1

    产生了2个dataview

     

                DataView dv1 = new DataView(dt1);

                DataView dv2 = new DataView(dt1);

    当然设置了不同的条件,然后分别绑定到两个DataGridView dgv1和dgv2

    现在通过dgv1某一行的某一个checkbox,修改了dt1里面的值,而这个值是dv2的过滤条件之一

    遇到的问题是

    当点下checkbox,在dgv1_CellContentClick事件中调用dgv1.EndEdit()以后,发现dt1里面的值已经更新,但是dv2里面的值没有更新,这就导致了dgv2显示的数据没有更新

    而只有当在画面上,光标离开被修改的那一行数据时,dgv2的数据才会被更新

    想请教一下有没有什么办法可以达到 当点到dgv1中的checkbox时,立即更新dgv2中的数据?

    2010年5月19日 9:35

答案

  • 好吧,提问果然有助于解决问题

    现在找到一个解决方案,就是

    dgv2.Focus();

    甚至于,用了这一句以后,都不需要主动去调用dgv1.EndEdit()了

    虽然可能有一些浪费,可是总算解决了眼前的问题

    • 已标记为答案 镜子 2010年5月20日 2:57
    2010年5月20日 2:50

全部回复

  • 你好!

         这个问题挺值得研究的,你可以看看大家的讨论:

    http://social.msdn.microsoft.com/Forums/en/winformsdatacontrols/thread/3aa81b24-2911-44ad-baf4-2619557b374e

         希望对你有帮助!


    周雪峰
    2010年5月19日 10:38
    版主
  • 我看了那一篇,他的问题是DataGridView没有把值传到DataTable,但是可以通过EndEdit()来解决

    我现在的问题是,我已经调用了.EndEdit(),然后DataTable已经得到正确的值,但是dv2却没有更新到正确的值,只有当我focus离开正在编辑的那一行(离开checkBox那一列也不能触发更新)或者我点了datagridview以外的其他的控件,才会更新到dv2从而更新到第二个DataGridView(dgv2)

    2010年5月20日 2:11
  • 好吧,提问果然有助于解决问题

    现在找到一个解决方案,就是

    dgv2.Focus();

    甚至于,用了这一句以后,都不需要主动去调用dgv1.EndEdit()了

    虽然可能有一些浪费,可是总算解决了眼前的问题

    • 已标记为答案 镜子 2010年5月20日 2:57
    2010年5月20日 2:50