У меня возникли трудности с правильной обработкой привязки моего сложного объекта. У меня есть 3 DataGridViews для формы и 1 источник привязки. BindingSource.DataSource является объектом FileMoveProcesses и DataMember является объектом FileMoveProcessВставка новых строк в DataGridView при привязке к BindingSource
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, которые имеют DataSource из BindingSource и DataMembers являются SourceDetails и DestinationDetails соответственно. Эта работа прекрасна, если у меня есть данные, уже имеющиеся в XML-файле для этих подробных элементов, как вы можете видеть ниже. Процесс редактирования работает просто отлично, обновления сериализуются так, как вы ожидали.
Проблема возникает, когда я пытаюсь добавить новый FileMoveProcess. Крайний левый DataGridView, содержащий FileMoveProcess, сохранит правильно, но когда я пытаюсь добавить данные SourceDetails и DestinationDetails в datagridview, они не могут создать объекты FileMoveProcessDetails для нового FileMoveProcess, поэтому он не может быть записан в XML-файл.
Что я пропустил?
ТИА
PS в ComboBoxes являются Enum привязки данных, поэтому данные доступны для нового элемента.
так что происходит, когда вы заполняете свои сетки деталей и нажмите save? когда вы отлаживаете, вы можете видеть ваши объекты FileMoveProcessDetails', прикрепленные к текущему 'FileMoveProcess', или они являются нулевыми? – Vland
, когда сетка источника или места назначения теряет фокус, все введенные данные очищаются. – Tim
Обновление. Я зашел в раздел DataBinding/Advanced свойств данных datagrid и сбросил для раскрывающегося списка привязки значение «none». Это очистило проблему очистки сетки, потеряв фокус. Теперь, когда я нажимаю save, объекты объектов имеют значение null. – Tim