如何将ASP.NET下拉列表DataTextField属性绑定到嵌套属性

Mic*_*ern 4 asp.net binding datatextfield drop-down-menu

我想将DataTextFieldASP.NET下拉控件的属性绑定到作为初始数据源属性的对象的属性.我将如何完成该特定任务.

下拉数据源数据模式

public class A
{
   public string ID { get; set; }
   public B { get; set; }
} 

public class B
{
   public string Name { get; set; }  //want to bind the DataTextField to this property
}
Run Code Online (Sandbox Code Playgroud)

ASP.NET代码背后

DropDownList MyDropDownList = new DropDownList();
List<A> MyList = GetList();

MyDropDownList.DataSource = MyList;
MyDropDownList.DataValueField = "ID";
Run Code Online (Sandbox Code Playgroud)

Chr*_*ins 11

假设你有一个A列表,并希望A.ID是ID字段,而ABName是Name字段,你不能直接绑定到B.Name,所以你要么必须在A上创建一个新属性来拉取从A的B属性中命名,或者您可以使用Linq创建一个匿名类型,为您执行此操作:

List<A> ListA = new List<A>{
    new A{ID="1",Item = new B{Name="Val1"}},
    new A{ID="2", Item =  new B{Name="Val2"}} ,          
    new A{ID="3", Item =  new B{Name="Val3"}}};

DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "ID";
DropDownList1.DataSource = from a in ListA
                           select new { ID, Name = a.Item.Name };
Run Code Online (Sandbox Code Playgroud)