Shah
Shah

Reputation: 1654

Retrieving values of dynamically created controls on Post back in Asp.Net

I need to dynamically add CheckBoxList on the SelectedIndexChanged event of DropDownList. I have achieved this but I cannot retain its value on postback.

Here’s what I have done so far:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    loadTracks();//Needs to generated dynamically
}

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
    loadDegrees();
    }
    loadTracks();
}

public void loadTracks()
{
    try
    {
        ConfigurationDB objConfig = new ConfigurationDB();
        DataSet ds = objConfig.GetTracksByDegreeID(
            Convert.ToInt32(ddlDegree.SelectedValue.ToString()));
        CheckBoxList CbxList = new CheckBoxList();

        CbxList.ID = "Cbx";
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            CbxList.Items.Add(new ListItem(ds.Tables[0].Rows[i]["Track_Name"]
                .ToString(), ds.Tables[0].Rows[i]["ID"].ToString()));
        }
        ph.Controls.Add(CbxList);
        ViewState["tracks"] = true;
    }
    catch(Exception ex)
    {
        Response.Write(ex.Message);
    }
}

//For testing, I added a button and on its click I have added this code

protected void btnDetails_Click(object sender, EventArgs e)
{
    CheckBoxList Cbx = (CheckBoxList)ph.FindControl("chk");
    foreach (ListItem ex in Cbx.Items)
    {
        if (ex.Selected)
        {
            Response.Write(String.Format("You selected: <i>{0}</i> <br>", ex.Value));
        }
    }
}

Upvotes: 2

Views: 1529

Answers (2)

hackp0int
hackp0int

Reputation: 4161

You can try it without changing the code and use pre PreRender just run you loadTracks()

Upvotes: 0

Andomar
Andomar

Reputation: 238296

Might be a typo:

CbxList.ID = "Cbx";

v.s.

CheckBoxList Cbx = (CheckBoxList)ph.FindControl("chk");

Upvotes: 4

Related Questions