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