0

我有一个 .NET 2.0 Winforms 应用程序(和 Subsonic 2.2),其中我有一个 DataGridView 和面板中的几个控件,两者都绑定到一个 BindingSource,其数据源是一个 Subsonic ActiveRecord 集合。当用户选择网格中的一行时,相应的详细信息将显示在下面的面板中的适当控件(texbox、combo、datetimepicker 等)中

当用户更改某些数据并尝试移动到其他行时,我希望应用程序显示数据已更改且需要保存的警告。如果用户选择是,数据应该被持久化。

我面临几个问题:

a)在 DGV.RowEnter 事件处理程序中,我尝试查找当前行是否脏(使用 Activerecord 的 IsDirty)。如果是这样,我会显示一个消息框。

b) 当我保存并重新绑定网格时,datagridview 的数据源无法重新绑定到新的(保存的)集合。该应用程序抛出“操作无效”的错误。

c) 此外,由于 gridview 和控件都绑定到同一个集合,所以每当我更改控件中的某些内容时,它都会反映在网格中,但是当用户选择“否”来保存数据时,应该撤消更改。subonic 是否像数据集一样有任何接受/取消更改?

谢谢!

4

1 回答 1

0

我终于想通了:

a) 虽然我能够毫无问题地保存数据,但只有当我尝试“重新绑定”它时,该应用程序才会引发错误。由于网格和控件已经绑定到包含最新更改的数据源,我删除了重新绑定代码,现在它不再抛出任何错误(“操作无效”

b) 撤消更改 - 这是通过在用户不想保存更改时调用 BindingSource.CancelEdit() 来完成的。

于 2012-01-19T06:40:45.963 回答