从视图值更新数据源(WinForms DataGridView)

从视图值更新数据源(WinForms DataGridView),winforms,datagridview,Winforms,Datagridview,我正在以编程方式更改DataGridView单元格值,但不会将值推送到绑定的数据源。仅为属于选定行的单元格推送它们。如何要求DataGridView将行值推送到数据源中 编辑: 这段代码似乎起到了作用,但可能是更好的解决方案吗 grid.CurrentCell = cell; cell.Value = "some value"; grid.EndEdit(0); 您不应该更新DataGridView单元格,而应该直接更新数据源。如果它实现了INotifyPropertyChanged,Data

我正在以编程方式更改DataGridView单元格值,但不会将值推送到绑定的数据源。仅为属于选定行的单元格推送它们。如何要求DataGridView将行值推送到数据源中

编辑:

这段代码似乎起到了作用,但可能是更好的解决方案吗

grid.CurrentCell = cell;
cell.Value = "some value";
grid.EndEdit(0);

您不应该更新
DataGridView
单元格,而应该直接更新数据源。如果它实现了INotifyPropertyChanged,
DataGridView
将自动反映更改

Hm。。。为什么我不应该这样做?我想将一些值粘贴到DataGridView中,并希望将它们传播到datasource中。为什么?很多原因。。。例如,这样做会引入UI和业务关注点之间的耦合。如果有一天你想将你的应用程序移植到WPF、ASP.NET或其他任何地方,那么如果业务相关的代码与UI相关的代码混合在一起,那将需要更多的工作。此外,DataGridView被设计为由用户修改,而不是由代码修改(因此您会遇到问题)。不管怎样,修改数据源比UI本身要简单得多。看起来你假设一个不同的场景。考虑到用户想为一些行做简单的复制/粘贴。DataGridView没有对此的内置支持,所以我有一个代码来实现这一点。我从剪贴板中获取数据并将其推入网格。我同意,有两种选择:将数据放入数据源或放入视图。我不想关心解析字符串值并手动将它们推送到数据对象的正确字段中。因此,如果列顺序发生变化,则无需更新CODE。在我的例子中,似乎将数据放入单元格更简单。所以,谢谢你的想法,但我想这不是我想要的。它只适用于我,如果我一开始就调用“grid.BeginEdit(true);”