问个关于在派生类中使用LINQ与datagridview绑定的问题
我现在有一个抽象类abstract class A
然后派生出一个A的子类B
实现子类B对象的一个数组B[]
接着用LINQ查询子类B的集合
var m = from c in B[] select c;
最后将m作为数据源与datagridview绑定:datagridview.datasource = m.tolist()
结果在datagridivew的列中只有子类自身的属性,父类的属性全部没有以列的形式显示出来
接着就改:
var m = from c in B[]
select new
{
别名1 = c.父类中的属性1,
别名2 = c.父类中的属性2
.
.
};
这样可以datagridview中显示出所有的属性
不过问题并没完~结果发现原来直接用datagridivew绑定B[]的时候可以编辑的单元格在用LINQ后所有的单元格都成只读取(所有的get; set;属性都只读)
后来分析应该是LINQ中的select new生成了一个匿名类型导致的,不知道是不是这个原因
请教各位高手这个问题如何解决?
分不够可以加哈~~~只希望能解决问题并学以致用
------解决方案--------------------第一个问题:父类的属性全部没有以列的形式显示出来
请将父类中的public字段,重构成属性,就会显示出来.
第二个问题:后来分析应该是LINQ中的select new生成了一个匿名类型导致的,不知道是不是这个原因
是这个原因.解决方法参见第一个问题.
------解决方案--------------------另外,建议楼主用WPF Toolkit 中的datagrid控件.而不是host 一个datagridview.
下载地址:http://wpf.codeplex.com/