回发后无法维持动态下拉列表选定值

时间:2012-10-05 12:27:17

标签: c# asp.net c#-4.0 webforms dynamic-controls

使用以下代码创建多个下拉列表。但我无法保持之前选择的值。请帮我保持之前的vaues。

我的代码在这里:

        for (int i = 1; i <= Count; i++)
        {
            Session["i"] = Count;

            Panel1.Controls.Add(new LiteralControl("<br />"));
            Label lbl = new Label();
            lbl.ID = "lbl" + i;
            lbl.Text = "Head";
            Panel1.Controls.Add(lbl);
            Panel1.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;&nbsp;"));

            DropDownList ddl = new DropDownList();
            ddl.ID = "ID" + i;
            ddl.DataValueField = "fld_Head";
            ddl.DataTextField = "fld_Head";
            ddl.DataSource = DVS;
            ddl.DataBind();
            Panel1.Controls.Add(ddl);
        }

3 个答案:

答案 0 :(得分:3)

正如我已经提到的here,您应该在Page_Init事件中初始化动态控件的值。

因为使用viewstate的asp.net内部功能会填充Page_Load事件中的值,如果仍未创建动态控件,则会忽略其值。\

常见问题=)

答案 1 :(得分:0)

您正在向DropDownList动态添加Panel。新添加的DropDownList控件将不会在回发后提供。你可以使用

HttpContext.Current.Request.Form["ID" + i]

从post请求中获取值。使用这些值,您可以添加具有新状态的新控件。

答案 2 :(得分:0)

在Page_Init中创建动态控件非常有效。