如何将GridView数据绑定到ExpandoObject

9
当我尝试使用ObjectDataSource将ASP.NET GridView数据绑定到IEnumerable<ExpandoObject>时,会出现以下异常信息。

System.Web.HttpException (0x80004005): DataBinding: 'System.Dynamic.ExpandoObject' does not contain a property with the name 'StoreID'.

有人知道如何将数据绑定到ExpandoObjects吗?

我知道这是可以做到的 - 我已经做过了 - 不幸的是,我丢失了一些与此相关的文件。如果这很重要,我可能可以重建它,但关键在于类似 ICustomTypeDescriptor 和/或 ITypedList 的东西。 - Marc Gravell
1个回答

6
开源框架Impromptu-Interface可以实现这一功能。它有一个方法,通过传入属性名称->类型的字典来暴露动态对象属性以供反射访问。
IEnumerable<dynamic> tProxiedObject = listOfExpandos.Select(x=>Impromptu.ActLikeProperties(x, x.ToDictionary(k=>k.Key,v=>typeof(object))));

这个可以工作。但是它不支持双向绑定。当我尝试更新时,发送到更新方法的对象为空。 - OrPaz
2
@OrPaz:你可以尝试使用ImpromptuInterface.MVVM https://www.nuget.org/packages/ImpromptuInterface.MVVM/4.0.13 - RBZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接