Har ett jobbigt problem som jag inte vet hur jag ska komma runt, har inte hittat något svar här i forumet heller... Verkar som lbl inte uppdateras vid varje postback. Om du helt enkelt sätter mmm har provat det. Eftersom inte c# vet om att "lbl" finns så har jag gjort så att jag anropar "createControls" efter varja klick på en knapp, för att rita upp alla kontroller igen. I "createControls" har jag nu lagt till "Panel1.Controls.Clear();" annars så blev det dubbla uppsättnigar knappar o lablar. Hepp... Om problemet är att viewstaten inte laddas in i kontrollerna så prova att anropa "CreateControls" från init-eventet istället för i load. Problemet är att click-eventena triggas efter att kontrollerna har skapats. Dvs:dynamiska kontroller ASP.Net C#
Jag skapar tre kontroller dynamiskt. två knappar och en label. När jag klickar på den ena knappen så ska värdet i labeln öka och när jag klickar på den andra så ska det minska. om jag lägger ut alla i designläget så fungerar det kanon. men när jag skapar dom via kodläget så inträffar följande fel:
När jag startar sidan och klickar på t.ex.ökaknappen så laddas sidan om men inget händer, klickar jag på samma knapp igen så börjar värdet i labeln att öka. om jag nu klickar på minska knappen så ökar labeln i värde igen, och inte förens nästa gång som jag klickar på minska knappen så minskar värdet. Koden ser ut så här: protected System.Web.UI.WebControls.Panel Panel1;
int i = 0;
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
i = 10;
this.ViewState["getInt"] = i;
}
else
{
i=(int)ViewState["getInt"];
}
createControls();
}
private void createControls()
{
Button btn1 = new Button();
btn1.Text = "upp";
btn1.Click+=new EventHandler(up_Click);
Panel1.Controls.Add(btn1);
Button btn2 = new Button();
btn2.Text = "ner";
btn2.Click+=new EventHandler(down_Click);
Panel1.Controls.Add(btn2);
Label lbl = new Label();
lbl.Text = i.ToString();
Panel1.Controls.Add(lbl);
}
private void up_Click(Object sender,EventArgs e)
{
i++;
this.ViewState["getInt"] = i;
}
private void down_Click(Object sender,EventArgs e)
{
i--;
this.ViewState["getInt"] = i;
}
hur ska man göra för att få det att fungera korrekt???
//Morgan Karlsson
Sv: dynamiska kontroller ASP.Net C#
private void up_Click(Object sender,EventArgs e)
{
i = (int)ViewState["getInt"];
i++;
ViewState["getInt"] = i;
lbl.Text = i.ToString();
}
Sv:dynamiska kontroller ASP.Net C#
Detta resulterar i föjande. Fösta klicket "öka"-knapppen, fungerar kanon. Andra klicket på samma knapp, ingenting händer. Tredje klicket på samma knapp, den ökar. o så håller den på varannangång öka och ingenting. Samma gäller såklart för "minska".
Fast felet att den går åt fel håll vid första klicket på en ny knapp är borta!Sv: dynamiska kontroller ASP.Net C#
Har byggt runt problemet, fick använda mig av "fasta" kontroller, inte lika snyggt. men, men....Sv:dynamiska kontroller ASP.Net C#
Sv: dynamiska kontroller ASP.Net C#
viewstate = 5
skapa kontrol
text = 5
click-event: viewstate -= 1
viewstate = 4
---
ny sida
---
viewstate = 4
text = 4
click-event: viewstate += 1
viewstate = 5
Hänger du med på varför det blir "en sida för sent"?