我从一个强类型列表填充DropDownList
,这样工作正常。问题是我想首先连接列表中的两个字段然后将它们放在下拉列表中。即, FirstName + LastName。我尝试了一些没有成功的东西,所以有人可以给这个新手一个小帮助。
这是我正在做的一个例子。
private List<Customer> _CustomerList = new List<Customer>();
ddlCustomer.DataSource = _CustomerList;
ddlCustomer.DataTextField = "FirstName";
ddlCustomer.DataValueField = "CustomerKey";
ddlCustomer.DataBind();
这有效,但我需要先和最后一起,我不能操纵Customer
对象中的数据。
答案 0 :(得分:10)
尝试使用动态创建的匿名对象的枚举。
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();
您可能必须在选择后添加ToList(),但我认为您可以绑定到IEnumerable<T>
。
P.S。此示例需要.Net 3.5 Framework
答案 1 :(得分:0)
您可以在Customer类中创建一个连接FirstName和LastName的属性,并且可以在ddlCustomer.DataTextField中使用该属性
答案 2 :(得分:0)
我还没有找到解决这个问题的好方法。我发现以下方法可以发挥最佳效果:
围绕Customer创建一个包装类(如果可能,继承自Customer,或者创建一个包含Customer对象的全新类,并公开更多属性。
在NEW类中创建一个属性,用于连接您希望数据绑定到的两个字段。
将下拉列表绑定到自定义对象的列表。
答案 3 :(得分:0)
要将UI表示与基础数据对象分开,可以使用名为FullName的单个属性在Customer周围创建一个包装器对象(如CustomerForUI),然后将一个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();
答案 4 :(得分:0)
有没有理由不能在下拉列表中手动建立列表项?既然你已经在代码中执行此操作,我不明白为什么不这样做。
只需枚举您的业务对象,然后使用:
ddlCustomer.Items.Add(new ListItem("text" , "value"));
其中text是连接在一起的名字和姓氏。
答案 5 :(得分:0)
我同意ScottE ......这似乎是最简单的方法,并且会少一个跟踪的对象。