2009-03-04 9 views
0

Ich erstelle einen Datei-Browser in ASP.Net, aber ich bin auf ein Problem gestoßen, das sich auf Event-Wiring auf dynamischen Steuerelementen bezieht. Ich werde erklären, was mein Code hier tut:Hinzufügen von ClickEvent auf dynamischen LinkButtons in OnLoadComplete

Wenn meine Seite lädt (OnLoad) rufe ich eine Methode (createStuff()), die eine Reihe von Linkbuttons erstellen (die Ordner in einem aktuellen Verzeichnis), die zu einem Ereignis verdrahtet sind Dadurch wird das aktuelle Verzeichnis in das Verzeichnis geändert, das der Verknüpfungsschaltfläche zugeordnet ist.

Da ein Linkbutton-Click-Ereignis ausgelöst wird, nachdem OnLoad aufgerufen wurde (und das aktuelle Verzeichnis daher erst nach dem Laden geändert wird), werden die Linkbuttons nicht aktualisiert, um das neue aktuelle Verzeichnis anzuzeigen (sie werden vor dem aktuellen Verzeichnis erstellt) geändert durch das Click-Event). Daher rufe ich createStuff() in OnLoadComplete auf, was dazu führt, dass die Linkbuttons aktualisiert werden und die Ordner im neuen aktuellen Verzeichnis widerspiegeln.

JEDOCH (und das ist mein Problem) scheint es, dass die Ereignisverbindung (Click + = new EventHandler (changeDirectory)) in createStuff() nicht wirklich funktioniert, wenn die Methode in OnLoadComplete aufgerufen wird (OnLoadComplete wird aufgerufen nachdem ein linkbutton-click-event ausgelöst wurde. Das Ergebnis ist, dass, während die Texteigenschaft der Linkbuttons die Ordner im neuen Verzeichnis widerspiegelt, das Klicken auf die Linkbuttons das Ereignis nicht auslöst.

Wie kann ich dieses Problem beheben? Ich habe versucht, die Ereignisse auf den LinkButtons in OnLoad aber das gleiche Ergebnis zu verkabeln.

Vielen Dank im Voraus

Simon, Dänemark

+0

Können Sie bitte einen Beispielcode angeben? Insbesondere frage ich mich, ob Sie ID-Werte für Steuerelemente angegeben haben, die dynamisch in createStuff() erstellt werden. –

+0

hi, danke fürs Kommentieren, hier ist die createStuff() - Methode: http://rafb.net/p/k0YlrU67.html Wie Sie sehen können, gebe ich keine ID-Werte an. – user73738

Antwort

3

das konsequent ID Eigenschaft Linkbutton Set.

Zwei häufige Ursachen für dieses Verhalten sind (1) fehlende Ereignishandler und (2) fehlende ID-Eigenschaften. Da Sie sicher sind, dass Ihr Ereignishandler während OnLoad angefügt wird, dann ist die fehlende ID-Eigenschaften der wahrscheinlichste Schuldige.

Wenn ein Benutzer auf den LinkButton auf dem Client klickt, wird ein PostBack an den Server gesendet, der den LinkButton nach ID benennt. Wenn Sie nicht sicherstellen, dass Ihr Steuerelement dieselbe ID zwischen PostBacks hat, wird Ihr Ereignishandler möglicherweise nicht ausgelöst.

+0

Ich hatte das Problem gelöst, indem ich den Browser einfach auf die Seite umgeleitet habe, nachdem das linkbutton click-event passiert war (der filesystembrowser ist in einer Session-Variable gespeichert). Aber ich denke deine Lösung (die funktioniert) ist besser, danke fürs Aushelfen! – user73738