2011-01-12 25 views
1

Ich werde mein Problem auf einfache Weise beschreiben, so ist es nicht genau das, was ich versuche, aber die Idee ist die gleiche.Hier ist das Problem:
Ich erstelle dynamische Tasten aus dem Code hinter .Ich bekomme eine ID aus der Abfragezeichenfolge, erstelle eine Schaltfläche mit dieser ID, dynamisches Ereignishandler hinzufügen, um auf ein Ereignis zu klicken, und füge eine Schaltfläche zu einem Platzhalter hinzu. Ich speichere die Liste der IDs in der Sitzung und erstelle diese Schaltflächen und füge sie hinzu placeholder.One der id-s ist CurrentID und es ist auch in session.Buttons klicken Handler etwas tun, wie diese LastButton click Event-Handler vor dem Laden der Seite

Button b=(Button)sender; 
Session["CurrentId"]=Convert.ToInt32(b.ID); 

in Seite gespeichert, wenn ich Schaltflächen erstellen ich von anderen Schaltfläche Texteigenschaft unterschiedlich festlegen möchten s wenn id==Convert.ToInt32(Session["CurrentId"]) wenn Liste der ID-s aus der Sitzung abgerufen werden. Problem ist, dass Click-Ereignishandler nach dem Laden der Seite aufgerufen wird, und wenn ich Schaltflächen beim Laden der Seite erstellen, wurde CurrentId in der Sitzung nicht von Click Event Handler.Can geknüpft Sie schlagen eine Lösung für diese Situation vor?

Antwort

1

Es sieht so aus, als ob Sie versuchen, die Schaltflächen zu aktualisieren, die Sie dynamisch erstellt haben, nachdem das Klickereignis ausgelöst wurde. Warum ändern Sie nicht einfach den Schaltflächentext innerhalb des Click-Ereignisses, wie Sie es beschrieben haben?

heißt

protected void button_Clicked(object sender, EventArgs e) 
{ 
    ((Button)sender).Text = "Custom text for active button"; 
} 

Auch können Sie jederzeit aktualisieren, um die Tasten auf der PreRender Ereignis, das nach der Kontrolle Click-Ereignisse auftritt, jedoch bevor die Kontrollen wieder auf den Client bedient.

+0

Danke, PreRender ist die Lösung. – unknown

+1

@unknown: Stellen Sie sicher, dass Sie den ASP.Net-Seitenlebenszyklus richtig lernen, es ist ein unschätzbares Wissen für diese Art von Problemen. Verwenden Sie den Akronym "SILVER", um sich die Etappen leicht zu merken. Sie können darüber lesen: http://www.codeproject.com/KB/aspnet/ASPNET_Page_Lifecycle.aspx –

Verwandte Themen