2011-11-14 64 views
3

我有一个DataGridView,并带有一些DataGridViewComboBoxColumn。这些列有其DataSource集,以便它们将显示某些值以供选择,但DataGridView本身没有将其DataSource设置为任何值。我手动加载/保存它的值。如何在不更改行的情况下查看DataGridView的更改

问题:当我更改其中一个组合框值时,我看不到更改,直到移动到另一行。

更多背景信息:该应用程序的主要目的是将数据从一个表移动到另一个表。在一列中选择表格的源字段,在下一列中选择另一个表格中的目标字段。该应用程序的一个功能是,当您单击行标题单元格时,它将显示您在该行中选择的源字段中不同值的列表。但是,当更新源字段时,我无法通过单击行标题单元格获取正确的结果,直到我首先离开行。

问题:使我的更改立即生效而不必首先离开行的最简单方法是什么?我实现了一些东西来完成这个复选框列的一次,但我想出的解决方案不适用于组合框列。我喜欢一切适用的东西。

谢谢!

编辑:如果你急于阅读本文并思考自己“这是一个糟糕的问题”,你介意让我知道为什么吗?我真的不介意你是否倒下了它......我只想了解这个问题是否与这是一个'糟糕的SO问题'有关,或者你是否认为我要求做一些你相信的事情是不聪明的,并且是不好的做法。

+0

呃...将那家伙谁downvoted这个问题的心态来解释为什么?换句话说,实际上有帮助? –

+1

不知道。看起来没问题,虽然更好的问题往往有简明的代码和少些英语。 Upvoted。 –

+0

@RitchMelton你更喜欢我用西班牙文写的吗? :)尽管如此,我并不清楚,并且很快得到了我想要的确切答案,而没有必要澄清任何事情。所以我会说这个问题写得很好。 –

回答

4

我推测您希望在选定该值后立即提交该值,因此也许这可能有助于实现该值。订阅CurrentCellDirtyStateChanged,看看它是否做你想要的东西。

void dataGridView1_CurrentCellDirtyStateChanged(object sender, 
    EventArgs e) 
{ 
    if (dataGridView1.IsCurrentCellDirty) 
    { 
     dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); 
    } 
} 
+0

完美!谢谢,我知道这一定很简单。 –

0

您是否在寻找CellValidated活动?您可以在此事件中手动保存数据。

+0

可能...我会尝试一下,让你知道很快。 –

+0

没有。该事件在离开该行时触发。我希望它在更改值时立即更新。 –

0

尝试使用以下功能:

dataGridView.RefreshEdit(); 
相关问题