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

C# DDL Datasource list of object. How to set DataTextField to the object's toString()?

MyDropDownList.DataSource = myList;
MyDropDownList.DataTextField="Name";
MyDropDownList.DataValueField="ID"; 
MyDropDownList.DataBind();

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

ToString() 会 return ID + " " + Name

我试过了

MyDropDownList.DataTextField="ToString()";

MyDropDownList.DataTextField="ToString";

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

我该怎么做?

最正确的选择是将 属性 添加到您放入列表中的对象。它可以通过表达式来定义。例如:

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

如果这不可能 - 您可以创建一个继承对象或包装对象,它们提供对 ToString 如何字段的方法的访问。

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

更新

还有第三种选择——你可以创建匿名对象 insted object-wrapper