Hej Hej AndersDynamiska kontroller efter postback
Jag har lite problem med en sida som skapar dynamiska kontroller.
Vid postback så uppdateras databasen och sedan ska dom dynamiska kontrollerna laddas olika beroende på bad som sparades vid postback. Men jag måste klicka två gånger på Spara för att det ska ändra sig.
Koden ser ut på följande vis:
// Här laddas dom dynamiska kontrollerna
protected void Page_Init(object sender, EventArgs e)
{
projectId = Request.QueryString["ProjectId"];
headMenuId = Request.QueryString["HeadMenuId"];
if (projectId == null || headMenuId == null)
{
Response.Redirect("ProjectList.aspx");
}
// Titel
Generic generic = new Generic();
lblTitle.Text = generic.GetHeadMenuTitle(headMenuId);
SubMenuGUI subMenuGUI = new SubMenuGUI();
PlaceHolder1.Controls.Add(subMenuGUI.GetSubMenuHtmlTable(headMenuId, projectId));
}
// Här sparas information ner till databasen
protected void btnSave_Click(object sender, EventArgs e)
{
// Sparar alla kontroller
ProjectDataDB projectDataDB = new ProjectDataDB();
SaveControls(PlaceHolder1);
projectDataDB.UpdateProjectDataStatus(int.Parse(projectId));
}
Men det som sparas i btnSave_Click kommer inte med när dom dynamiska kontrollerna laddas. Då måste jag klicka en gång till på btnSave_Click.
Jag har försökt läsa på om ASP.NET Lifecycle och kommit fram till att dynamsika kontroller ska laddas i Page_Init, men jag får ingen ordning på det ändå.
Tack på förhand.
MVH
AndersSv: Dynamiska kontroller efter postback
Länge sedan jag var aktiv här men när jag tittar på din kod så undrar jag om inte Page_Init körs före data sparas till databasen, alltså före din btnSave_Click funktion.
Jag antar att du vill att din btnSave_Click funktion körs först, dvs sparar data till databasen och att Page_Init sedan körs och därmed laddar kontrollerna med data. Jag tror inte det funkar så...
Är det inte så att när en sida har laddats färdigt i ASP.NET så är den död. Du kan alltså inte bara få sidan att köra btnSave_Click funktionen när du trycker på Spara-knappen. Hela sidan laddas om först, dvs Page_Init och sedan btnSave_Click.
Om jag minns rätt måste du skapa en funktion som efter att btnSave_Click körts hämtar data från databasen. Fiinns det inte en Page_Load funktion som fungerar som Page_Init men som kan köras efter Page_Init?
void Page_Load()
{
if (IsPostBack)
{
//Hämta data
}
}
Ursäkta mitt svamlande men jag är rostig... tre års "off programming" sätter minnet ur spel.
Mvh Peter