Я, кажется, не могу заставить работать привязку данных к динамическим объектам или ExpandoObjects.
Я пробовал это в WinForms и в WebForms и получал разные результаты в каждом из них:
В 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();
}
Это приводит к:
Привязка данных: «System.Dynamic.ExpandoObject» не содержит свойство с именем «Имя».
В WinForms у меня другая проблема:
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";
Это приводит к тому, что ComboBox отображает "System.Dynamic.ExpandoObject" - так как он просто вызывает ToString ()на двух предметах в коллекции.: (
Я ценю помощь!