2011-01-19 13 views
8

Quando provo a connettere un ASP.NET GridView a un IEnumerable<ExpandoObject> utilizzando un ObjectDataSource, ottengo la seguente eccezione.Come associare un gridview a un ExpandoObject

System.Web.HttpException (0x80004005): DataBinding: 'System.Dynamic.ExpandoObject' non contiene una proprietà con il nome 'StoreID'.

Qualcuno sa come posso eseguire il databind a ExpandoObjects?

+0

so che può essere fatto - [ho fatto] (http://marcgravell.blogspot.com/2008/11/dynamic-objects-part1.html) - purtroppo ho perso alcuni file da quell'esercizio, però. Se è importante potrei probabilmente ricostruirlo, ma la chiave qui sarà qualcosa come 'ICustomTypeDescriptor' e/o' ITypedList' –

risposta

6

Il framework opensource Impromptu-Interface può farlo. Ha un metodo per esporre le proprietà degli oggetti dinamici per la riflessione passando in un dizionario di nomi di proprietà-> tipi.

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

Questo funziona. Ma non supporta il binding in due modi. Quando provo ad aggiornare, l'oggetto inviato al metodo di aggiornamento è vuoto. – OrPaz

+2

@OrPaz: potresti provare ImpromptuInterface.MVVM https://www.nuget.org/packages/ImpromptuInterface.MVVM/4.0.13 – RBZ

Problemi correlati