1

我正在使用下面的代码来创建一个多重下拉列表。但我无法保持之前选择的值。请帮助我保持以前的价值。

我的代码在这里:

        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);
        }
4

3 回答 3

3

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

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

常见问题 =)

于 2012-10-05T12:37:11.847 回答
0

您正在将 aDropDownList动态添加到 aPanel中。新添加DropDownList的控件在回发时将不可用。您可以使用

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

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

于 2012-10-05T12:36:26.437 回答
0

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

于 2014-10-04T08:33:00.687 回答