如何将列表项添加到后面代码中生成的下拉列表中
本文关键字:代码 下拉列表 列表 添加 | 更新日期: 2023-09-27 18:06:07
我在后面的代码中动态创建了下拉列表。我想添加一个列表项,它是下拉菜单的默认选项。
int Persons= int.Parse(TextBox_persons.Text) + 1;
for (int i = 1; i < Persons; i++)
{
DropDownList DropDownList_menuchoice = new DropDownList();
DropDownList_menuchoice.DataSource = Menu.GetAllMenus();
DropDownList_menuchoice.CssClass = "form-control";
DropDownList_menuchoice.Items.Add(new ListItem("please select a menu", "-1"));
DropDownList_menuchoice.DataTextField = "titel";
DropDownList_menuchoice.DataValueField = "titel";
DropDownList_menuchoice.DataBind();
Panel1.Controls.Add(DropDownList_menuchoice);
}
为什么这个不行?我一直在网上寻找答案,然而,每个人都建议items.add
代码,它不适合我。它只显示我从数据库中检索到的数据,而不显示我在上面的代码中添加的列表项。
如果你知道这是为什么,请帮助我。
首先你需要在调用DataBind方法后添加项目。这样的:
DropDownList DropDownList_menuchoice = new DropDownList();
DropDownList_menuchoice.DataSource = Menu.GetAllMenus();
DropDownList_menuchoice.CssClass = "form-control";
DropDownList_menuchoice.DataTextField = "titel";
DropDownList_menuchoice.DataValueField = "titel";
DropDownList_menuchoice.DataBind();
DropDownList_menuchoice.Items.Add(new ListItem("please select a menu", "-1"));
则需要使用Insert方法将其添加到索引0处(作为第一项):
DropDownList_menuchoice.Items.Insert(0, new ListItem("please select a menu", "-1"));
u也可以先向数据中添加项,然后设置DataSource属性。像这样:
var data = Menu.GetAllMenus();
data.Insert(0, new Menu { titel = "please select a menu" });
DropDownList_menuchoice.DataSource = data;
...
您需要重新创建pre_init
事件上的下拉列表。
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
//create your dropdown here
}
编辑1
int Persons= int.Parse(TextBox_persons.Text) + 1;
Session["Persons"]=Person;
在pre_init protected override void OnPreInit(EventArgs e)
{
int Persons=0;
if(Session["Persons"]!=null)
Persons= int.Parse(Session["Persons"].ToString()) + 1;
for (int i = 1; i < Persons; i++)
{
DropDownList DropDownList_menuchoice = new DropDownList();
DropDownList_menuchoice.DataTextField = "titel";
Panel1.Controls.Add(DropDownList_menuchoice);
}
base.OnPreInit(e);
}