It's kind of hard to give any accurate help without an idea of what it's supposed to look like, but I rearranged the for loop contents a bit, and found an extra call to Add(dynDiv). Here's my reorg attempt:
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ImageButton ImB = new ImageButton();
ImB.ID = "Description_ToggleImage" + i.ToString();
ImB.ImageUrl = "~/images/collapse.jpg";
ImB.AlternateText = "collapse";
ImB.Click += new ImageClickEventHandler(Description_ToggleImage_Click);
EventCalendar.EventCalendarControl E3 = new EventCalendar.EventCalendarControl();
E3.ID = "EventCalendarControl" + i.ToString();
AjaxControlToolkit.CollapsiblePanelExtender coll = new AjaxControlToolkit.CollapsiblePanelExtender();
coll.ID = "cpeDesc" + i.ToString();
coll.TargetControlID = "description_ContentPanel" + i.ToString();
coll.ExpandControlID = "description_HeaderPanel" + i.ToString();
coll.CollapseControlID = "description_HeaderPanel" + i.ToString();
coll.Collapsed = false;
coll.ImageControlID = "description_ToggleImage" + i.ToString();
coll.SuppressPostBack = true;
Panel p1 = new Panel();
p1.ID = "description_HeaderPanel" + i.ToString();
Panel p2 = new Panel();
p2.ID = "description_ContentPanel" + i.ToString();
System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
dynDiv.ID = "dynDivCode" + i.ToString();
dynDiv.Style.Add(HtmlTextWriterStyle.Position, "300" + (i) + "px");
p1.Controls.Add(ImB);
p2.Controls.Add(E3);
dynDiv.Controls.Add(p1);
dynDiv.Controls.Add(p2);
form1.Controls.Add(dynDiv);
form1.Controls.Add(Brek);
form1.Controls.Add(coll);
form1.Controls.Add(Brek);
}
BTW, if you run the page and let it render, and then view the page source, you'll likely see any problems, and be able to modify your code accordingly.