Работает ли привязка данных к динамике и ExpandoObjects в .NET - PullRequest
5 голосов
/ 17 сентября 2011

Я, кажется, не могу заставить работать привязку данных к динамическим объектам или 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 ()на двух предметах в коллекции.: (

Я ценю помощь!

1 Ответ

0 голосов
/ 19 марта 2016

Попробуйте это

var contacts = new List<dynamic>()
{
    new {Name = "Patrick Hines",Phone = "206-555-0144"},
    new {Name = "Ellen Adams",Phone = "206-555-0155"}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...