Вопрос

Am using the below code to create a multiple drop down list. But i can't able to maintain the previous selected value. Please help me to maintain the previous vaues.

My code is Here:

        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);
        }
Это было полезно?

Решение

As I already mentioned here you should init values of you dynamic controls in Page_Init event.

Because asp.net internal functionality working with viewstate populates values in Page_Load event and if your dynamic control isn't still created it's values are ignored.\

Common issue =)

Другие советы

You are adding a DropDownList dynamically to a Panel. Newly added DropDownList control will not be available at a post-back. You can use

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

to get the values from post request. And with that values you can add new controls with new state.

Putting the creation of dynamic controls in Page_Init works perfectly.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top