有没有办法通过由对象的多个属性组成的c#在asp.net中创建下拉列表的datatextfield属性?
public class MyObject { public int Id { get; set; } public string Name { get; set; } public string FunkyValue { get; set; } public int Zip { get; set; } } protected void Page_Load(object sender, EventArgs e) { ListmyList = getObjects(); ddList.DataSource = myList; ddList.DataValueField = "Id"; ddList.DataTextField = "Name"; ddList.DataBind(); }
我想要不要使用"名称",而是"名称(Zip)",例如.
当然,我可以更改MyObject类,但我不想这样做(因为MyObject类在模型类中,不应该在UI中做我需要的东西).
将另一个属性添加到MyObject类并绑定到该属性:
public string DisplayValue { get { return string.Format("{0} ({1})", Name, Zip); } }
或者,如果您无法修改MyObject,请在表示层中创建一个包装器对象(仅用于显示).这也可以使用一些LINQ来完成:
ListmyList = getObjects(); ddList.DataSource = (from obj in myList select new { Id = obj.Id, Name = string.Format("{0} ({1})", obj.Name, obj.Zip) }).ToList(); ddList.DataValueField = "Id"; ddList.DataTextField = "Name"; ddList.DataBind();
(抱歉,我没有Visual Studio,因此代码中可能存在错误)