【发布时间】:2011-11-03 04:18:08
【问题描述】:
我正在寻找 .NET Windows 窗体的免费/付费组件,让我们可视化(表格)包含各种类型数据的单个列表。我还希望有一种方法可以自定义任何内置的 .NET 组件来做同样的事情。
我有一个由 4 种不同类型的数据组成的数据集,它们都实现了一个通用接口。我可以将 DataGridView 的数据源设置为接口对象的列表,并且我得到一个漂亮的统一网格就好了。但是,我想要做的是能够展开每一行以查看底层类的实际数据类型值。
这是一组数据示例:
public interface ICommonData {
long ID {get;}
DateTime Date {get;}
}
public class ClassA : ICommonData {
public long ID {get;}
public DateTime Date {get;}
public string Description {get;set;}
public string Title {get;set;}
}
public class ClassB : ICommonData {
public long ID {get;}
public DateTime Date {get;}
public long SomeReferenceNumber {get;set;}
public string SomeName {get;set;}
}
使用这些数据,我会将网格绑定到一个包含 ClassA 和 ClassB 对象混合的列表。我需要的是能够扩展任何行并查看包含 ClassA 或 ClassB 的所有字段的记录,具体取决于绑定到该行的数据类型。
我知道使用 Microsoft WPF DataGrid 对象(使用 RowDetailSelector)可以实现我需要的东西,但如果我不必这样做,我宁愿不使用 WPF。另一个重要的注意事项是,这都是只读的。我不需要任何方式来编辑任何这些数据。我的用例是我的库与许多不同类型的错误日志记录挂钩,我需要一种方法以一种表格格式可视化所有这些不同类型的错误记录(同时能够查看所有不同类型的数据)。
任何帮助将不胜感激!
【问题讨论】:
-
知道这种“混合物”应该是什么样子吗?一切都是表格?知道如何可视化哪些行属于“ClassA”类型,哪些行属于“ClassB”类型?
-
对于表的主要行,它将是基于 ICommonData 属性的直表。当您展开一行时,理想情况下您会看到一个子表布局,其中一行显示实际 ClassA 或 ClassB 属性的所有列。或者至少给我一个面板,我可以在其中布置我自己的数据格式。这就是 WPF 控件的工作原理……您只需获得一个 Grid,您可以在其中放置任何您喜欢的东西。
标签: .net winforms data-binding datagrid