C# 使用TableAdapterManager';分层更新
以下是事实:C# 使用TableAdapterManager';分层更新,c#,datagridview,C#,Datagridview,以下是事实: 我有一个父表,我们称之为Order。使用DataGridView(dgvOrder)查看此表中的数据 我有一个子表,我们称之为OrderDetails。使用DataGridView(dgvOrderDetails)查看此表中的数据 我有文本框(以及复选框、组合框等),它们被数据绑定到订单表(使用BindingSource) 我正在使用VisualStudio2008 我想做什么: dgvOrder是只读的。我使用它来浏览BindingNavigator中的记录。(我喜欢使用Data
- 层次结构更新(在数据集设计器中)设置为true(在VS 2008中默认)
- 订单和OrderDetail之间的关系设置为“关系和fk约束”。更新和删除设置为级联。接受/拒绝规则设置为“无”。嵌套关系未选中
- TableAdapterManager被拖动到设计器(tam) 私有void uxNewButton_单击(对象发送方,事件参数e){ } 私有void uxSaveButton_单击(对象发送者,事件参数e){ }
dgvOrder.Refresh(); //or
dgvOrder.Invalidate();
dgvOrder.Refresh(); // or
dgvOrder.Parent = null;
Controls.Add(dgvOrder);
//and so on and so forth (suggetstions from Google searches)
在dgvOrderDetail的Enter事件上添加bsOrder.EndEdit()似乎可以解决问题,但我不确定这是否是最佳做法。添加bsOrder.EndEdit()在dgvOrderDetail的Enter事件上,似乎可以解决问题,但我不确定这是否是最佳做法。我忘记了在调用tam.UpdateAll()之前以编程方式移动dgvOrder选择并不能解决问题。添加bsOrder.EndEdit()在dgvOrderDetail的Enter事件上,似乎可以解决问题,但我不确定这是否是最佳做法。我忘记提到在调用tam.UpdateAll()之前以编程方式移动dgvOrder选择并不能解决问题。添加bsOrder.EndEdit()在DGVORDERDETAILE的Enter事件中,似乎可以解决问题,但我不确定这是否是最佳实践。
this.Validate();
bsOrder.EndEdit();
bsOrderDetails.EndEdit();
tam.UpdateAll(dsOrder); //DataSet is named dsOrder. try-catch block excluded for simplicity
dgvOrder.Refresh(); //or
dgvOrder.Invalidate();
dgvOrder.Refresh(); // or
dgvOrder.Parent = null;
Controls.Add(dgvOrder);
//and so on and so forth (suggetstions from Google searches)