使用数组填充列表框?
我正在处理的网站将包含一个下拉列表,其中显示了许多原因代码。
是否可以使用派生自定义类的数组填充下拉列表?
像这样的东西:
ASPX
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 getRejectReasons() { List reasons = new List(); 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();
使用ListItem代替字符串 ,使用Addrange进行添加
编辑:getReasons不是变量所以使用getReasons()
ASPXPAGE
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; }
– 编辑:
我注意到你特意想绑定到一个数组。 我不相信这是可能的(可能是错的); 我在下面举例说明如何为自定义类做这个,也许它是有用的,也许不是。 希望别人能更直接地回答你。
– 旧:
当然是这样的:
ddlList.DataSource = yourDataSource; ddlList.DataTextField = "DisplayProperty"; ddlList.DataValueField = "PropertyForValue"; ddlList.DataBind();
但请注意,在您的示例中,您尚未发布该类,您已发布了一种方法。 在关于’yourDataSource’的示例中应该是这样的:
List yourDataSource = new List ();
(另)
this.ddlReasonsWhy.DataSource = reasonsList.getReasons; this.ddlReasonsWhy.DataBind();
只是一个想法,但如何:
this.ddlReasonsWhy.Items.Add(reasonsList.getReasons().Select(r => new ListItem(r)));