簡體   English   中英

使用數組填充列表框?

[英]Use an array to populate a listbox?

我正在工作的網站將包含一個下拉列表,其中顯示了許多原因代碼。

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

像這樣:

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:

多虧了答案和這個堆棧鏈接,我的最終解決方案類似於Ahmet和絲滑的答案。

 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();

-編輯:

我注意到您特別想綁定到數組。 我不認為是可能的(可能是錯誤的)。 我將下面的示例留給自定義類如何使用,也許有用,也許沒有用。 希望其他人可以更直接地回答您。

-舊:

當然是這樣的:

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

但是請注意,在您的示例中,您尚未發布該類,而是已發布了一個方法。 在有關“ yourDataSource”的示例中,應為:

List<YourObjects> yourDataSource = new List<YourObjects>();

使用ListItem代替字符串,並使用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;
    }

(未試)

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

只是一個想法,但是如何:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM