我正在处理的网站将包含一个下拉列表,其中显示了许多原因代码。
是否可以使用派生自定义类的数组填充下拉列表?
这样的事情:
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();
答案 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)));