I am having some issues in dynamically created controls. My scenario is when the user selects a dropdown values, it should dynamically create image buttons, where URL is from database. Then when the user click’s any one of the image, it should create the same image in the placeholder. The problem is when I give the on click event in the code behind its not working and I know it has to be initialized in Page init, but since the creation is based on Selectedindexch ange, I don’t know how to proceed further. When I click the image, the page is post back and the images are gone. Please see my below code
Thanks
Code:
protected void Selectedindex_loadObjTemp(object sender, System.EventArgs e)
{
PlaceHolder PlaceHolder1 = new PlaceHolder();
// Get the number of labels to create.
String objTyoe = ddlObjTemp.SelectedValue;
String strSQl = "select * from ObjectTemplates where type=" + objTyoe;
DataTable dt = FillDataTable(strSQl);
Table addTable = new Table();
addTable.Controls.Clear();
if (dt.Rows.Count > 0)
{
int datavount = 0;
for (int i = 0; i <= datavount; i++)
{
TableRow newRow = new TableRow();
for (int j = 0; j <= 3; j++)
{
TableCell newcell = new TableCell();
System.Web.UI.WebControls.ImageButton myImage = new System.Web.UI.WebControls.ImageButton();
myImage.ID = "imgv" + dt.Rows[datavount]["id"];
myImage.Attributes.Add("runat", "server");
switch (objTyoe)
{
case "1":
myImage.ImageUrl = "~/Images/streets/" + dt.Rows[datavount]["fileName"];
break;
case "2":
myImage.ImageUrl = "~/Images/Street Templates/" + dt.Rows[datavount]["fileName"];
break;
case "5":
myImage.ImageUrl = "~/Images/vehicles/" + dt.Rows[datavount]["fileName"];
break;
case "6":
myImage.ImageUrl = "~/Images/signs/" + dt.Rows[datavount]["fileName"];
break;
case "7":
myImage.ImageUrl = "~/Images/animals/" + dt.Rows[datavount]["fileName"];
break;
case "8":
myImage.ImageUrl = "~/Images/labels/" + dt.Rows[datavount]["fileName"];
break;
case "99":
myImage.ImageUrl = "~/Images/other/" + dt.Rows[datavount]["fileName"];
break;
case "9":
myImage.ImageUrl = "~/Images/ghosts/" + dt.Rows[datavount]["fileName"];
break;
}
Panel newpanel = new Panel();
newpanel.Controls.Add(myImage);
newcell.Controls.Add(newpanel);
myImage.Click += new System.Web.UI.ImageClickEventHandler(
this.btnCreate_Click);
datavount++;
newRow.Cells.Add(newcell);
if (datavount >= dt.Rows.Count)
break;
}
if (datavount >= dt.Rows.Count)
break;
addTable.Rows.Add(newRow);
}
mainPanel.Controls.Add(addTable);
}
}
private void btnCreate_Click(object sender, EventArgs e)
{
showmsg(sender.ToString() + e.ToString());
}
Comment