Erstes Element in der Dropdown-Liste löst SelectedIndexChanged überhaupt nicht aus

7

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

angezeigt

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!

    
AaA 02.01.2012, 09:24
quelle

7 Antworten

3

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.

  • Fügen Sie HiddenField zu Ihrem Formular hinzu.
  • In Page_Load Vergleichswert von HiddenField mit Request.Forms[DropDownList1.UniqueID]
  • Wenn sie unterschiedlich sind, rufen Sie SelectedIndexChanged manuell
  • auf
  • Setzen Sie den Wert von HiddenField auf den Wert von Request.Forms[DropDownList1.UniqueID] .
AaA 09.01.2012, 03:16
quelle
12

Für jemanden, der immer noch das Problem hat; Ich habe es auf eine andere, aber einfachere Art und Weise gelöst: Fügen Sie einfach ein Dummy-ListItem zum Anfang der DropDownList hinzu und legen Sie die Enabled-Eigenschaft dieses Elements auf false fest. d. h.

%Vor%     
hentie 26.06.2012 13:05
quelle
1

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

    
ZoharAdar 08.02.2012 15:42
quelle
1

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).

    
goodeye 10.08.2015 01:42
quelle
1

Ich hatte das gleiche Problem, aber ich habe es gelöst, indem ich onindexchanged function manuell aufgerufen habe, wie folgt:

%Vor%

Ich weiß, das ist vielleicht nicht der perfekte Weg, aber es funktioniert für mich.

    
Bisher Andoura 06.01.2016 11:02
quelle
0

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%     
TheGeekYouNeed 02.01.2012 09:41
quelle
0

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.

    
P5Coder 17.05.2016 19:12
quelle

Tags und Links