Dynamisk generede controls forsvinder ved postback
Ja titlen siger næsten det hele, jeg indsætter en masse controls ud fra et database udtræk. Men når jeg laver et postback forsvinder min controls ? Burde de ikke blive på siden selvom de er genereret dynamisk ?Lidt kode :
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if(!IsPostBack){
string lastyear = "",thisyear;
bannerid = Request.QueryString["id"].ToString();
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@bannerid",bannerid);
cmd.CommandText="select * from vw_bannerratio where bannerid=@bannerid";
SqlDataReader result = cmd.ExecuteReader();
tr = tblWeekholder.Rows;//all the tablerows
while (result.Read()){
thisyear=result["dateyear"].ToString();
if(thisyear!=lastyear){//add a table row with year
tblWeekholder.Rows.Add(new TableRow());
rc = tr[tr.Count-1].Cells; //tablerow cellcollection
rc.Add(new TableCell());
rc[0].ColumnSpan=3;
rc[0].Attributes.Add("align","center");
rc[0].Controls.Add(new LiteralControl("<br>"));
rc[0].Controls.Add(new LiteralControl(thisyear));
tr.Add(new TableRow());
tr[tr.Count-1].Cells.Add(new TableCell());
tr[tr.Count-1].Cells.Add(new TableCell());
tr[tr.Count-1].Cells.Add(new TableCell());
rc = tr[tr.Count-1].Cells; //tablerow cellcollection
rc[0].Text="Uge";
rc[1].Controls.Add(new System.Web.UI.WebControls.Image());
((System.Web.UI.WebControls.Image)rc[1].Controls[0]).ImageUrl="img/9x9.gif";
rc[2].Controls.Add(new LiteralControl("Ratio"));
}
tr.Add(new TableRow());//add new tablerow
rc = tr[tr.Count-1].Cells; //tablerow cellcollection
rc.Add(new TableCell());
rc[0].Controls.Add(new LiteralControl(result["dateweek"].ToString()));
rc.Add(new TableCell()); //spacer
rc.Add(new TableCell());
rc[2].Controls.Add(new TextBox());
rc[2].Controls.Add(new TextBox());
rc[2].Controls.Add(new TextBox());
cc = rc[2].Controls; //cell controls
((TextBox)cc[0]).CssClass="box5";
((TextBox)cc[0]).Text = result["ratio"].ToString();
((TextBox)cc[1]).Text = result["dateweek"].ToString();
((TextBox)cc[1]).Visible=false;
((TextBox)cc[2]).Text = result["dateyear"].ToString();
((TextBox)cc[2]).Visible=false;
lastyear=thisyear;
}
}
}
