如何知道DataGridView的数据绑定何时真正完成



我对这个DataGridView控件感到非常沮丧。我真正想做的只是确保网格最初以某种默认方式排序(尽管如果需要,用户可能会对其进行不同的排序)。

我尝试分配DataSource,然后调用Sort方法。这有时有效,但有时会导致InvalidOperationException。调试它似乎表明,在它不工作的时候,网格没有行或列。这种行为的间歇性让我猜测这是一场竞赛,所以当我分配数据源时,网格可能没有同步绑定,而是在后台绑定。

因此,我查看MSDN文档,发现有一个事件DataBindingCompleted。这看起来刚刚好,我附上了一个处理程序。该事件是在网格本身上声明的,因此您可能认为这意味着整个控件的所有数据绑定都已完成。然而,每次我将新数据绑定到网格时,它都会触发多次(我不知道,但猜测每个单元格一次)。

我想我可以接受这一点;开销可能并不很大,因为网格可能足够智能,如果被要求对自己进行"col1-asc"排序,则根本不会做太多事情,而且它已经按照这种方式进行了排序。(如果没有,我可以自己做测试,除非我真的要改变什么,否则不会调用sort。)不过,我真的很想知道是否真的没有办法知道数据绑定何时真正完成。

我们通常在处理绑定后的详细信息(如排序)时使用DataBound事件,并且多年来一直使用该事件,但没有描述行为。也许这就是你想要的活动?

最新更新