如何将列表项添加到后面代码中生成的下拉列表中

本文关键字:代码 下拉列表 列表 添加 | 更新日期: 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);
}