DataGridView с наследованием источника данных

Я пытаюсь создать расширенную версию WinForms DataGridView (ElementDataGrid), чтобы разрешить сортировку и фильтрацию. Поскольку это будет виджет, используемый несколькими разработчиками, я хочу скрыть класс SortableBindingList внутри и передать пользователю обычный список с элементом управления, создающим SortableBindingList.

Я создал базовый класс под названием Element, который могут быть расширены другими разработчиками, но когда я устанавливаю DataPropertyName столбца на свойство, которого нет в Element, в этом столбце ничего не отображается. В качестве примера у меня есть класс комментария, наследуемый от Element. Я хочу отобразить дату комментария и текст комментария в таблице данных. Ни в одном из этих столбцов нет данных, но столбцы, использующие свойства, унаследованные от Element, отображаются правильно.

Есть ли простой способ получить значения свойств отображения сетки из классов, унаследованных от базового класса Element? В качестве альтернативы, можно ли сделать так, чтобы свойство использовало общий список?

ОБНОВЛЕНИЕ: вот метод, который я использую, чтобы установить источник данных для моего SortableBindingList. Как я уже сказал, свойства из Element заполняются в сетке, когда я хочу их показать, а свойства из Comment, которые наследуются от Element, - нет.

public List<Element> DataElements
{
  set
  {
    bindingDataSource.Clear();

    SortableBindingList<Element> boundDataSource = new SortableBindingList<Element>();
    bindingDataSource.DataSource = boundDataSource;

    foreach (Element e in value)
    {
      bindingDataSource.Add(e);
    }

    this.DataSource = bindingDataSource;
  }
}

person Adam Nelson    schedule 05.09.2012    source источник
comment
Пожалуйста, предоставьте соответствующий код, чтобы прояснить вопрос ... и что вы пробовали, а также код, вызывающий ошибку ...   -  person Niranjan Singh    schedule 05.09.2012
comment
@Niranjan Kala Добавлен код для моего свойства DataElements.   -  person Adam Nelson    schedule 05.09.2012


Ответы (1)


Взгляните на ответ Марка Грейвелла на этот вопрос SO. Предполагая, как он говорит в своем ответе, что данные однородны (это означает, что вы не смешиваете комментарии и SomeOtherClass в своем списке элементов) и в нем есть хотя бы один элемент (чтобы он мог вывести фактический тип данных в списке), я думаю, что это сработает для вашей ситуации.

person itsmatt    schedule 05.09.2012