【发布时间】:2014-01-07 17:40:14
【问题描述】:
我很难让我的复杂对象数据绑定正常工作。我在一个表单上有 3 个 DataGridViews 和 1 个绑定源。 BindingSource.DataSource 是 FileMoveProcesses 对象,DataMember 是 FileMoveProcess 对象
public class FileMoveProcesses
{
public List<FileMoveProcess> Processes { get; set; }
}
public class FileMoveProcess
{
public string Name { get; set; }
public bool Disabled { get; set; }
public FileMoveProcessDetails SourceDetails { get; set; }
public FileMoveProcessDetails DestinationDetails { get; set; }
}
还有 2 个其他 DataGridViews 具有 BindingSource 的 DataSource 和 DataMembers 分别是 SourceDetails 和 DestinationDetails。如果我在这些详细项目的 xml 文件中已有可用数据,则此工作正常,如下所示。编辑过程工作得很好,更新按照您的预期进行序列化。
当我尝试添加新的 FileMoveProcess 时出现问题。包含 FileMoveProcess 的最左侧 DataGridView 将正确保存,但是当我尝试在 datagridview 中添加 SourceDetails 和 DestinationDetails 数据时,它们无法为新的 FileMoveProcess 创建 FileMoveProcessDetails 对象,因此无法写入 xml 文件。
我错过了什么?
TIA
PS ComboBoxes 是 Enum 数据绑定,因此数据可用于新项目。
【问题讨论】:
-
那么当您填写详细信息网格并按保存时会发生什么?当你调试时,你能看到你的
FileMoveProcessDetails对象附加到当前的FileMoveProcess还是为空? -
当源或目标详细信息网格失去焦点时,所有输入的数据都会被清除。
-
更新。我进入详细数据网格属性的 DataBinding/Advanced 部分并将绑定下拉菜单重置为“无”。这解决了失去焦点时网格被清除的问题。现在,当我单击保存时,详细信息对象为空。
-
FileMoveProcessDetails 只能有 1 个 SourceDetails,对吗? (和 1 个目的地详情)
标签: winforms data-binding datagridview objectdatasource