在我的项目中,我想使用 mvccontrib ( http://mvccontrib.codeplex.com ) 通过将 DataTable 传递给网格来自动生成网格。目前 Grid 不支持这个。
Grid 采用 IEnumerable(Of T) 并自动生成列。他们有什么方法可以通过传递 DataTable 来实现吗?或者我如何将 DataTable 转换为 IEnumerable(Of T)。我的 DataTable 是完全动态的,我在设计时不知道列数或列名。DataTable 完全动态的列数不固定它只是任何DataTable。
我怎样才能做到这一点?
简而言之,我想将 Dynamic DataTable 转换为 IEnumerable(Of T)。还是他们有更好的方法。
我尝试了以下方式
1) 我尝试的一种方法是使用 .net 4.0 Dynamic、DynamicObject 和 ExpandoObject 我创建了一个动态类,如下所示http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.trygetindex.aspx。我尝试通过 IEnumerable(Of SampleDynamicObject) 但 BuildColumns() 方法无法找出动态添加到它的属性。
2) 我认为修改 AutoGenerateColumns() 方法以使用 DataTable 的第二种方法,但它看起来不可能,因为使用 IEnumerable(Of T) 进行 Grid Get 初始化并且所有对网格的调用都使用 IEnumerable(Of T)。所以归结为将 DataTable 转换为 IEnumerable(Of T) 并且我的 DataTable 是动态的我在设计时不知道它们的结构所以我不能编写任何特定的类来创建对象并将 DataTable 转换为 IEnumerable(Of T) .
有没有人对此有更好的出路。
谢谢
沙