[英]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.