2011-01-19 8 views
8

Kiedy próbuję połączyć datakry ASP.NET GridView z IEnumerable<ExpandoObject> przy użyciu ObjectDataSource, otrzymuję następujący wyjątek.Jak ustawić databinda gridview na ExpandoObject

System.Web.HttpException (0x80004005): DataBinding: "System.Dynamic.ExpandoObject" nie zawiera właściwości o nazwie "StoreID".

Ktoś wie, w jaki sposób mogę databind do ExpandoObjects?

+0

wiem, można to zrobić - [Zrobiłem to] (http://marcgravell.blogspot.com/2008/11/dynamic-objects-part1.html) - niestety straciłem kilka plików z to ćwiczenie. Jeśli jest to ważne, prawdopodobnie mógłbym je zrekonstruować, ale kluczem będzie tutaj coś w rodzaju 'ICustomTypeDescriptor' i/lub' ITypedList' –

Odpowiedz

6

Może to zrobić framework z otwartymi zasobami Impromptu-Interface. Posiada metodę eksponowania dynamicznych właściwości obiektu do odbicia poprzez przekazanie w słowniku nazw właściwości-> typów.

IEnumerable<dynamic> tProxiedObject = listOfExpandos.Select(x=>Impromptu.ActLikeProperties(x, x.ToDictionary(k=>k.Key,v=>typeof(object)))); 
+0

To działa. Ale nie obsługuje dwukierunkowego wiązania. Podczas próby aktualizacji obiekt wysłany do metody aktualizacji jest pusty. – OrPaz

+2

@ OrPaz: możesz wypróbować ImpromptuInterface.MVVM https://www.nuget.org/packages/ImpromptuInterface.MVVM/4.0.13 – RBZ

Powiązane problemy