2011-01-19 11 views
8

Cuando trato de vincular un ASP.NET GridView a un IEnumerable<ExpandoObject> usando un ObjectDataSource, obtengo la siguiente excepción.Cómo vincular una vista de cuadrícula a un ExpandoObject

System.Web.HttpException (0x80004005): DataBinding: 'System.Dynamic.ExpandoObject' no contiene una propiedad con el nombre 'StoreID'.

¿Alguien sabe cómo puedo databind a ExpandoObjects?

+0

sé que se puede hacer - [Lo he hecho] (http://marcgravell.blogspot.com/2008/11/dynamic-objects-part1.html) - por desgracia he perdido algunos archivos de ese ejercicio, sin embargo. Si es importante, probablemente podría reconstruirlo, pero la clave aquí será algo como 'ICustomTypeDescriptor' y/o' ITypedList' –

Respuesta

6

El marco de código abierto Impromptu-Interface puede hacerlo. Tiene un método para exponer las propiedades dinámicas del objeto para la reflexión pasando en un diccionario de nombres de propiedades-> tipos.

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

Esto funciona. Pero no es compatible con el enlace bidireccional. Cuando intento actualizar, el objeto enviado al método de actualización está vacío. – OrPaz

+2

@OrPaz: puedes probar ImpromptuInterface.MVVM https://www.nuget.org/packages/ImpromptuInterface.MVVM/4.0.13 – RBZ

Cuestiones relacionadas