代码之家  ›  专栏  ›  技术社区  ›  user7066940

对象的C#DDL数据源列表。如何将DataTextField设置为对象的toString()?

  •  0
  • user7066940  · 技术社区  · 8 年前
    MyDropDownList.DataSource = myList;
    MyDropDownList.DataTextField="Name";
    MyDropDownList.DataValueField="ID"; 
    MyDropDownList.DataBind();
    

    这就是我将对象列表绑定到dropdownlist的方式。我的问题是如何将DataTextField设置为对象的ToString()方法。

    我试过了

    MyDropDownList.DataTextField="ToString()";
    

    MyDropDownList.DataTextField="ToString";
    

    但是,DataTextField需要属性名,而不是方法名。

    如果有的话,我该怎么做呢?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Anton Gorbunov    7 年前

    最正确的选项是向列表中放置的对象添加属性。它可以通过表达式定义。例如:

    public class MyListItem
    {
        //some code ID, Name properties and so on
        public string Description => ToString();
        public override string ToString()
        {
            return $"{ID} {Name}";
        }
    }
    

    如果这是不可能的-您可以创建一个inhert对象或包装器对象,其提供对 ToString 如何字段的方法。

    然后可以在DropDownList中设置此属性,如: MyDropDownList.DataTextField = "Description";

    使现代化

    还有第三个选项-您可以创建匿名对象,而不是对象包装器