使用数组填充列表框?

时间:2010-01-07 12:47:58

标签: c# asp.net arrays

我正在处理的网站将包含一个下拉列表,其中显示了许多原因代码。

是否可以使用派生自定义类的数组填充下拉列表?

这样的事情:

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,我的最终解决方案类似于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();

4 个答案:

答案 0 :(得分:3)

- 编辑:

我注意到你特意想绑定到一个数组。我不相信 是可能的(可能是错的);我在下面举例说明如何为自定义类做这个,也许它是有用的,也许不是。希望别人能更直接地回答你。

- 旧:

当然是这样的:

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

但请注意,在您的示例中,您尚未发布该课程,您已发布了一种方法。在'yourDataSource'的例子中应该是这样的:

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

答案 1 :(得分:3)

使用 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;
    }

答案 2 :(得分:1)

(未经测试)

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

答案 3 :(得分:0)

只是一个想法,但是怎么样:

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