Как реализовать зависимость родитель-дочь между двумя 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();
    }

введите сюда описание изображения


Ответы (0 шт):