2011-09-17 13 views
5

Por mi vida, no parece ser capaz de obtener Databinding en Dynamics o ExpandoObjects funcionando.¿Databinding to dynamics y ExpandoObjects funcionan en .NET

He intentado esto en Windows Forms y Web Forms y en obtener resultados diferentes en cada uno:

En ASP.NET:

<asp:DropDownList ID="DropDownList1" runat="server"> 
</asp:DropDownList> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     dynamic contacts = new List<dynamic>(); 

     contacts.Add(new ExpandoObject()); 
     contacts[0].Name = "Patrick Hines"; 
     contacts[0].Phone = "206-555-0144"; 

     contacts.Add(new ExpandoObject()); 
     contacts[1].Name = "Ellen Adams"; 
     contacts[1].Phone = "206-555-0155"; 


     DropDownList1.DataSource = contacts; 
     DropDownList1.DataTextField = "Name"; 
     DropDownList1.DataBind(); 

    } 

Esto se traduce en:

DataBinding: 'del sistema. Dynamic.ExpandoObject 'no contiene una propiedad con el nombre' Nombre '.

En WinForms, tengo un problema diferente:

 dynamic contacts = new List<dynamic>(); 

     contacts.Add(new ExpandoObject()); 
     contacts[0].Name = "Patrick Hines"; 
     contacts[0].Phone = "206-555-0144"; 

     contacts.Add(new ExpandoObject()); 
     contacts[1].Name = "Ellen Adams"; 
     contacts[1].Phone = "206-555-0155"; 

     this.departmentList.DataSource = contacts; 
     this.departmentList.DisplayMember = "Name"; 

Esto se traduce en el cuadro combinado que muestra "System.Dynamic.ExpandoObject" - como se le llama simplemente ToString() en los dos elementos de la colección . :(

Agradezco la ayuda!

+1

No puedo hablar de esas API, enlace de datos dinámico funciona en WPF sin embargo. – jbtule

+1

Ha visto a esta pregunta [Cómo DataBind una vista en cuadrícula de un ExpandoObject] (http://stackoverflow.com/questions/4740969/how-to-databind-a-gridview-to-an-expandoobject) y [this] (http://stackoverflow.com/questions/ 1653046/what-are-the-true-benefits-of-expandoobject/1653069 # 1653069) ¿Responde a una pregunta diferente? – R0MANARMY

+0

No obtengo errores, pero en las aplicaciones de la Tienda Windows, el valor inicial leído está bien, pero la notificación de cambio posterior no parece funcionar. –

Respuesta

0

Prueba este

var contacts = new List<dynamic>() 
{ 
    new {Name = "Patrick Hines",Phone = "206-555-0144"}, 
    new {Name = "Ellen Adams",Phone = "206-555-0155"} 
};