Ich habe folgenden einfachen Code:
%Vor%Und das ist mein Code hinter
%Vor% Wenn ich die Seite das erste Mal betrete, zeigt label1
'???!!'
an. Jetzt wähle ich einen Gegenstand aus der Dropdown-Liste und label1
zeigt den korrekten Wert an, aber wenn ich den ersten Gegenstand im Dropdown-Menü anwähle, wird wieder ???!!
anstelle von Fired on 1
Wo ich falsch mache?
Bearbeiten: Ich habe festgestellt, dass wenn ich Selected="True"
zu einem der Gegenstände im Dropdown hinzufüge, dieser Gegenstand zum Opfer wird und das Ereignis nicht auslöst!
Ich habe das Problem selbst gelöst,
Ich habe irgendwo gelesen, dass das Ausschalten von ViewStateMode
dazu führt, dass DropDownList
nicht richtig funktioniert. In meiner Webanwendung musste ich ViewStateMode
ausschalten, um eine globale Aufgabe zu erreichen, und sie von Fall zu Fall aktivieren.
Irgendwie funktioniert das Einschalten von ViewStateMode
auf DropDownList
nicht, ich habe sogar probiert, ViewStateMode
für Seite und Masterseite einzuschalten, aber DropDownList
hat nicht funktioniert. es funktionierte nur, wenn ich ViewStateMode
in web.config
eingeschaltet habe.
Als das Einschalten von ViewStateMode
in web.config
keine Option ist, habe ich eine alternative Lösung gefunden. Ich nehme es hier in der Hoffnung auf, dass es jemandem hilft.
HiddenField
zu Ihrem Formular hinzu. Page_Load
Vergleichswert von HiddenField
mit Request.Forms[DropDownList1.UniqueID]
SelectedIndexChanged
manuell HiddenField
auf den Wert von Request.Forms[DropDownList1.UniqueID]
. Hatte das gleiche Problem - SelectedIndexChanged wird nicht ausgelöst, wenn die erste Option ausgewählt wird, Meine nicht saubere Lösung war (nicht sicher, das war so schlau, aber es funktioniert für mich),
Beim Page_Load habe ich das folgende Skript hinzugefügt:
%Vor%Auf diese Weise erzwinge ich das SelectedIndexChanged-Ereignis ausgelöst
Diese Frage deckt alle Möglichkeiten besser ab als andere Beiträge, daher füge ich diese explizite Antwort hinzu. In meinem Fall hat @ Edyns Kommentar funktioniert, obwohl das ursprüngliche Problem bereits folgendes hat:
Setzen Sie ViewStateMode="Enabled"
auf das Dropdown-Steuerelement selbst.
Ich habe es auch auf die Deklaration der Seite oben auf der Seite gesetzt, nur für den Fall.
Das ist .Net 4.0, also wurde vielleicht etwas geändert (aber sicher nicht gut gelöst).
Ich hatte das gleiche Problem, aber ich habe es gelöst, indem ich onindexchanged
function manuell aufgerufen habe, wie folgt:
Ich weiß, das ist vielleicht nicht der perfekte Weg, aber es funktioniert für mich.
Dies passiert, weil Sie das Label auf "??? !!" setzen jedes Seitenereignis.
Sie müssen Ihre Seitenladung ändern, um zu erkennen, dass kein Postback aufgetreten ist.
%Vor%In meinem Fall passierte das, weil ich auf dieses Dropdown mit einer lokalen Dropdown-Variablen hingewiesen und diese Variable am Ende einer Funktion angeordnet hatte. Ich habe nach dem Einstellen einer Datenquelle den ersten Eintrag zur Dropdown-Liste hinzugefügt. Ich brauchte 2 Stunden, um das zu finden, und funktionierte perfekt, nachdem ich den Entsorgungsruf entfernt hatte.