Как привязать данные gridview к ExpandoObject

Когда я пытаюсь привязать данные ASP.NET GridView к IEnumerable<ExpandoObject> с помощью ObjectDataSource, я получаю следующее исключение.

System.Web.HttpException (0x80004005): DataBinding: «System.Dynamic.ExpandoObject» не содержит свойства с именем «StoreID».

Кто-нибудь знает, как я могу привязать данные к ExpandoObjects?


person EtienneT    schedule 19.01.2011    source источник
comment
Я знаю, что это можно сделать – я сделал это - к сожалению, я потерял несколько файлов из этого упражнения. Если это важно, я, вероятно, мог бы восстановить его, но ключ здесь будет что-то вроде ICustomTypeDescriptor и/или ITypedList   -  person Marc Gravell    schedule 20.01.2011


Ответы (1)


Платформа с открытым исходным кодом Impromptu-Interface может сделать это. У него есть метод предоставления свойств динамических объектов для отражения путем передачи словаря имен свойств -> типов.

IEnumerable<dynamic> tProxiedObject = listOfExpandos.Select(x=>Impromptu.ActLikeProperties(x, x.ToDictionary(k=>k.Key,v=>typeof(object))));
person jbtule    schedule 28.02.2011
comment
Это работает. Но он не поддерживает двустороннюю привязку. Когда я пытаюсь обновить, объект, отправленный в метод обновления, пуст. - person OrPaz; 10.03.2013
comment
@OrPaz: вы можете попробовать ImpromptuInterface.MVVM nuget.org/packages/ImpromptuInterface.MVVM /4.0.13 - person RBZ; 07.07.2014