我正在尝试创建 WinForms DataGridView (ElementDataGrid) 的扩展版本以允许排序和过滤。由于这将是多个开发人员使用的小部件,因此我想在内部隐藏 SortableBindingList 类,并让用户只传入一个普通的 List,控件创建 SortableBindingList。
我创建了一个名为 Element 的基类,其他开发人员可以对其进行扩展,但是当我将列的 DataPropertyName 设置为不在 Element 中的属性时,该列中没有显示任何内容。例如,我有一个继承自 Element 的 Comment 类。我想在数据网格中显示评论日期和评论文本。这些列中都没有任何数据,但使用从 Element 继承的属性的列正确显示。
有没有一种简单的方法可以让网格显示继承自 Element 基类的类的属性值?或者,有没有办法让该属性采用通用列表?
更新:这是我用来将数据源设置为我的 SortableBindingList 的方法。正如我所说,当我想显示来自 Element 的属性时,它们会被填充到网格中,但继承自 Element 的 Comment 中的属性却不是。
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;
}
}