从占位符 C# 中的动态下拉列表中检索值

Retrieve value from dynamic dropdownlist in placeholder C#

我有动态下拉列表,这些列表是根据列表框中选择的内容创建的。单击确认时,即是创建下拉列表的时间。单击保存是我尝试检索值的地方。但是我无法检索下拉列表中的值。

代码:

protected void btnConfirm_Click(object sender, EventArgs e)
{
    int ID = 0;
    foreach (string value in values)
    {
        MyStaticValues.alEdit.Add(value);
        CreateEditForm(value, ID);
        ID += 1;
   }
   if (values.count != 0)
   {
        btnSave.Visible = true;
        btnConfirm.Enabled = false;
   }
}//End of btnConfirm_Click

protected void CreateEditForm(string Value, int ID)
{//Creates an edit form for the value inserted.
    string name = value;

    //This part adds a header
    phEditInventory.Controls.Add(new LiteralControl("<h2>" + name + "</h2>"));
    phEditInventory.Controls.Add(new LiteralControl("<div class=\"clearfix\"></div>"));

    //Create a label
    Label lblName = new Label();
    lblName.Text = "Name";
    lblName.ID = "lblName" + ID;
    lblName.CssClass = "control-label";

    //Create a Drop Down List
    DropDownList ddlName = new DropDownList();
    ddlName.ID = "ddlName" + ID;
    ddlName.CssClass = "form-control";

    //Set default N/A Values For Drop Down List
    ddlName.Items.Add(new ListItem("N/A", Convert.ToString("0")));

    //The Rest of the Values are populated with the database

    //Adds the controls to the placeholder
    phEditInventory.Controls.Add(lblName);
    phEditInventory.Controls.Add(ddlName);
    phEditInventory.Controls.Add(new LiteralControl("<div class=\"clearfix\"></div>"));
} //End of CreateEditForm

protected void btnSave_Click(object sender, EventArgs e)
{
    string name = "";

    try
    {
        for (int i = 0; i < MyStaticValues.alEdit.Count; i++)
        {
            string nameID = "ddlName" + i.ToString();
            DropDownList ddlName = (DropDownList)phEditInventory.FindControl(nameID);
            name = ddlName.SelectedValue.ToString();
         }
     }
     catch (Exception ex)
     {
     }

     phEditInventory.Visible = false;
     btnSave.Visible = false;
     MyStaticValues.alEdit.Clear();
}//End of btnSave_Click Function

您的问题是动态创建的下拉列表未在回发时维护。当您单击“保存”按钮时,会发生回发,并且会在没有动态创建的下拉列表的情况下重新呈现页面。这 link 可能会有所帮助。

Maintain the state of dynamically added user control on postback?