DGV Привязка данных вместе с коллекцией из «вложенного» класса свойств второго уровня? - PullRequest
1 голос
/ 28 апреля 2019

Можно ли связать такую ​​структуру данных с DGV?

public class ClassA
{
    public string propertyA { get; set; }
    public string propertyB { get; set; }
    public ClassB propertyC { get; set; }
}

// This class acts like a preset uniform list, just to add extra columns
public class ClassB
{
    public static List<string> namesForEveryClassC { get; private set; } // Also every column header and set by the user
    private List<ClassC> data { get; set; } // Bind this

    public ClassC this[string name]
    {
        get
        {
            foreach (ClassC item in this.data)
                if (item.name == name)
                    return item;
            return null;
        }
    }

    public ClassB()
    {
        foreach (string name in namesForEveryClassC)
            data.Add(new ClassC(name));
    }
}

public class ClassC
{
    public string name { get; set; } // This is only to identify columns
    public int value { get; set; } // Binded in the DataGridView as a cell and able to be set by the user

    public ClassC(string aName)
    {
        this.name = aName;
        this.value = 0;
    }
}

ClassB похож на следующую часть столбцов DGV, коллекция статических строк используется в качестве имен для заголовков столбцов итакже редактируемый пользователем из ListBox, то, что должно быть связано с каждым столбцом, является значением int из ClassC.В основном DGV должен быть похож на ...

 Class A properties      namesForEveryClassC string items as headers
+-----------+-----------+--------+--------+--------+ ... +--------+
| PropertyA | PropertyB | ValueA | ValueB | ValueC | ... | ValueN |
+-----------+-----------+--------+--------+--------+ ... +--------+
|    ...    |    ...    |    2   |    4   |   0    |     |    7   |
 Class A values          int values in every ClassC from ClassB collection data

Какой метод должен быть хорошим?Класс B наследует BindingSource?Использовать интерфейс ITypedList и PropertyDescriptor?Вручную установить каждый столбец?

Моя главная проблема - получить доступ к значению с помощью индексатора ClassB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...