[英]Populating a DropDownlist From a Strongly Typed List
我从一个强类型的列表中填充了一个DropDownList
,并且工作正常。问题是我想先连接列表中的两个字段,然后将它们放在下拉列表中,即FirstName + LastName。尝试了一些没有成功的事情,所以有人可以给这个新手一点帮助。
这是我在做什么的一个例子。
private List<Customer> _CustomerList = new List<Customer>();
ddlCustomer.DataSource = _CustomerList;
ddlCustomer.DataTextField = "FirstName";
ddlCustomer.DataValueField = "CustomerKey";
ddlCustomer.DataBind();
这行得通,但是我需要首先和最后一起使用,并且我无法在Customer
对象中处理该数据。
尝试使用动态创建的匿名对象的枚举。
var _CustomerList = customers.Select( c => new {
Name = c.FirstName + " " + c.LastName,
Key = c.CustomerKey
});
ddlCustomer.DataSource = _CustomerList;
ddlCustomer.DataTextField = "Name";
ddlCustomer.DataValueField = "Key";
ddlCustomer.DataBind();
您可能必须在Select之后添加ToList(),但是我认为您可以绑定到IEnumerable<T>
。
PS此示例需要.Net 3.5框架
您可以在Customer类中创建一个将FirstName和LastName连接在一起的属性,并且可以在ddlCustomer.DataTextField中使用该属性。
我尚未找到解决此问题的好方法。 我发现以下方法可以最好地发挥作用:
创建围绕Customer的包装器类(如果可能,从Customer继承,或创建一个包含Customer对象并公开其他属性的全新类。
在NEW类中创建一个属性,该属性将您希望数据绑定的两个字段连接在一起。
将下拉列表绑定到您的自定义对象的列表。
要从基础数据对象中分离出UI表示形式,可以围绕Customer创建一个包装对象,例如CustomerForUI,具有一个名为FullName的单个属性-然后将一个CustomerForUI对象列表放入UI中。
就像是:
public class CustomerForUI
{
private string _FullName;
public CustomerForUI(Customer c)
{
_FullName = c.FirstName + " " + c.LastName;
}
public string FullName
{
get {return _FullName;}
}
public string CustomerKey
{ ... }
}
并构造一个名为_UIList的CustomerForUI对象的列表,并:
ddlCustomer.DataSource = __UIList;
ddlCustomer.DataTextField = "FullName";
ddlCustomer.DataValueField = "CustomerKey";
ddlCustomer.DataBind();
有没有原因导致您无法手动建立下拉列表中的列表项? 由于您已经在代码中进行此操作,所以我不明白为什么不这样做。
只需枚举您的业务对象,并使用:
ddlCustomer.Items.Add(new ListItem("text" , "value"));
其中text是串联在一起的名字和姓氏。
我同意ScottE ...这似乎是最简单的方法,并且要减少一个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.