2010-01-07 147 views
1

我正在處理的網站將包含一個顯示許多原因代碼的下拉列表。使用數組來填充列表框?

是否可以使用派生自自定義類的數組填充下拉列表?

事情是這樣的:

ASPX頁面

<asp:DropDownList ID="ddlReasonsWhy" runat="server"></asp:DropDownList> 

ASPX代碼隱藏

protected void Page_Load(object sender, EventArgs e) 
{ 
    //instantiate custom class 
    Class1 reasonsList = new Class1(); 
    //populate reasons list 
    this.ddlReasonsWhy.Items.Add(reasonsList.getReasons); 

自定義類

public string[] getReasons() 
    { 
     string[] Reasons; 
     Reasons[0] = "test"; 
     Reasons[1] = "test2"; 
     Reasons[2] = "test3"; 

     return Reasons; 
    } 

UPDATE1:

多虧了答案,這個堆link我的最終解決方案類似於艾哈邁德和柔滑的答案。

public List<ListItem> getRejectReasons() 
    { 
     List<ListItem> reasons = new List<ListItem>(); 
     reasons.Add(new ListItem("Select Value", "0")); 
     reasons.Add(new ListItem("Red", "1")); 
     reasons.Add(new ListItem("Green", "2")); 
     return reasons; 

    } 

代碼隱藏

//instantiate custom class 
Class1 reject = new Class1(); 
this.ddlReasonsWhy.DataSource = reject.getRejectReasons(); 
this.ddlReasonsWhy.DataBind(); 

回答

3

使用列表項,而不是的AddRange添加

編輯:getReasons是不是一個變量如此使用getReasons()

ASPXPAGE

<asp:DropDownList ID="ddlReasonsWhy" runat="server"></asp:DropDownList> 

ASPX代碼隱藏

protected void Page_Load(object sender, EventArgs e) 
{ 
    //instantiate custom class 
    Class1 reasonsList = new Class1(); 
    //populate reasons list 
    this.ddlReasonsWhy.Items.AddRange(reasonsList.getReasons()); 
} 

自定義類

public ListItem[] getReasons() 
    { 
     ListItem[] Reasons; 
     Reasons[0] = "test"; 
     Reasons[1] = "test2"; 
     Reasons[2] = "test3"; 

     return Reasons; 
    } 
+0

謝謝 - 這非常有幫助 - 請參閱我的update1以獲取正確的類語法。 – 2010-01-07 15:39:29

1

(未經測試)

this.ddlReasonsWhy.DataSource = reasonsList.getReasons; 
this.ddlReasonsWhy.DataBind(); 
+0

試過了 - 得到一個空引用異常 – 2010-01-07 14:57:35

0

只是一個想法,但如何:

this.ddlReasonsWhy.Items.Add(reasonsList.getReasons().Select(r => new ListItem(r))); 
3

- 編輯:

我注意到您特別想綁定到一個數組。我不相信是可能的(可能是錯誤的);我將下面的示例留給如何爲自定義類實現,也許它是有用的,也許不是。希望別人能更直接地回答你。

- 老:

當然,這是,像這樣:

ddlList.DataSource  = yourDataSource; 
ddlList.DataTextField = "DisplayProperty"; 
ddlList.DataValueField = "PropertyForValue"; 
ddlList.DataBind(); 

但是要注意,在你的榜樣,你還沒有發佈的類,您發佈的方法。在關於 'yourDataSource' 的例子應該是這樣的:

+0

感謝 - 肯定了我在正確的方向。 – 2010-01-07 15:38:43