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


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

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

ToString()将返回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方法的访问。

你可以在下拉列表中设置这个属性,比如:MyDropDownList.DataTextField = "Description";

还有第三种选择——您可以创建匿名对象而不是对象包装器

最新更新