Можно ли связать такую структуру данных с 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.