Как реализовать зависимость родитель-дочь между двумя GridLookupEdit внутри Gridа Devexpress Winforms C#
Имеется GridControl, внутри нее имеется n-ое количество полей. Определенные поля имеют ColumnEdit - вида GridLookupEdit, источником данных(DataSource) для GridLookupEdit являются коллекции вида ObservableCollection. Например родительский GridLookupEdit должен иметь тип коллекции <класс работ>, а дочерний как-то наследовать от нее коллекцию <работа>.
Попытка сделать две коллекции, привязать их к своих GridLookupEdit и дочернюю в событиях(например смена фокуса строки) обновлять - ничему хорошему не привели, так при обновлении дочерней коллекции при смене фокуса, строки, где был выполнена привязка элемента <работа> другого <класс работ> - перестают отображать содержимое.
Конечно в голову приходит сделать зависимость класс_работ <- работа внутри самого класса, но я не знаю, как это реализовать в гриде. Допустим так:
/// <summary>Вид мероприятия</summary>
public class WorkoverClass
{
/// <summary>Инициализация "Класс мероприятия"</summary>
/// <param name="id">Идентификатор</param>
/// <param name="name">Наименование</param>
/// <param name="workoverClasses">Коллекция видов работ</param>
public WorkoverClass(decimal id, string name, ObservableCollection<WorkoverClass> workoverClasses)
{
this.Id = id;
this.Name = name;
this.WorkoverClasses = workoverClasses;
}
/// <summary>Идентификатор класс</summary>
public decimal Id { get; protected set; }
/// <summary>Наименование</summary>
public string Name { get; protected set; }
public ObservableCollection<WorkoverClass> WorkoverClasses { get; protected set; }
}
Но в текущий момент просто 2 коллекции присваиваются и на событиях (смена фокуса, выбор элемента в первой коллекции) меняется вторая:
this.workoverClassGridLookUp.DataSource = this.workoverClasses;
this.workoverTypeGridLookUp.DataSource = this.currentWorkoverTypes;
Тут метод обновления:
/// <summary>Обновляем текущую коллекцию видов мероприятий в зависимости от вида объекта</summary>
/// <param name="workoverClass"></param>
private void RefreshCurrentWorkoverTypes(WorkoverClass workoverClass)
{
this.currentWorkoverTypes.Clear();
if (workoverClass == null)
{
return;
}
this.allWorkoverTypes.Where(obj => obj.WorkoverClass.Id == workoverClass.Id).
ForEach(workoverT => this.currentWorkoverTypes.Add(workoverT));
this.bandedGridView1.RefreshData();
}
