Hi Guys,
Recently i have got a requirement to load the user control dynamically in to a page.When i drag and drop the user Control in design surface run the app it is working fine but when i load the User Control dynamically(Programmatically) .I am unable to find the Control while post back .So i have started dig the functionality and finally i have Fixed the issue .Here is the solution .
Step#1
Write the method which take user Control name as a parameter .Call this method wherever it is required Add the placeholder control to your page and name it as "plchUserCtrlContainer"
private void LoadUserControl(string urcName) { string path = Server.MapPath(@"~\Controls\" + urcName + ".ascx"); if (System.IO.File.Exists(path)) { Session["FormName"] = urcName; Control ucMainControl = LoadControl(@"~\Controls\" + urcName + ".ascx"); if (ucMainControl != null) { plchUserCtrlContainer.Controls.Clear(); ucMainControl.ID = Session["FormName"].ToString(); plchUserCtrlContainer.Controls.Add(ucMainControl); } } }
Step#2
Write Page OnInit event functionality as i have specified below .
override protected void OnInit(EventArgs e) { Session["FormName"] = Request["FormName"].ToString(); Control ucMainControl = LoadControl(@"~\Controls\" + Session["FormName"] + ".ascx"); plchUserCtrlContainer.Controls.Clear(); ucMainControl.ID = Session["FormName"].ToString(); plchUserCtrlContainer.Controls.Add(ucMainControl); }
Step#3
You can find the control using following line of code
protected void btnsave_Click(object sender, EventArgs e) { Control assControl = (Control)FindControl(Session["FormName"].ToString()); }