2008-09-16 18 views
0

Ich habe ein seltsames Problem mit einer Dropdown-Box selectedIndex wird immer auf 0 beim Postback gesetzt. Ich verbinde es nicht versehentlich in meinem Code neu. Tatsächlich habe ich einen Haltepunkt in der allerersten Zeile des page_load -Ereignisses platziert und der Wert ist bereits auf Null gesetzt. Das Dropdown-Menü befindet sich auf der Hauptseite meines Projekts. Ich weiß nicht, ob das einen Unterschied macht. Ich verweise nicht auf die Kontrolle in meinem Inhaltsinhaber.asp.net dropDownBox selectedIndex wird nicht gepflegt

Wenn ich meine autoPostBack = 'true' einstellen, funktioniert die Seite gut. Ich muss keinen Code ändern und der selectedIndex wird beibehalten. Ich habe auch versucht, enableViewState ein- und auszuschalten und es macht keinen Unterschied. An diesem Punkt fange ich nach Strohhalmen, um herauszufinden, was vor sich geht. Ich hatte dieses Problem noch nie zuvor.

Hier ist der Code in meinem page_load-Ereignis.

 If CartEstablished Then 
      txtCustNum.Visible = False 
      btnCustSearch.Visible = False 
      lblCustNum.Visible = True 
      ddlSalesType.Visible = False 
      lblSalesType.Visible = True 
      ddlTerms.Visible = False 
      lblTerms.Visible = True 

      lblTerms.Text = TermsDescription 
     Else 
      txtCustNum.Visible = True 
      btnCustSearch.Visible = True 
      lblCustNum.Visible = False 

      lblSalesType.Visible = False 
      ddlSalesType.Visible = True 
      lblTerms.Visible = False 
      ddlTerms.Visible = True 
     End If 

     If Page.IsPostBack Then 
      GetUIValues() 
     Else 

      LoadTermCodes() 
     End If 

Die LoadTermCodes ist, wo ich die Dropdownlist binden, die mir Probleme verursacht.

Antwort

1

Sind Sie sicher, dass Sie ein Postback und keine Aktualisierung durchführen? Es ist schwierig, Ihnen ohne mehr Kontext in das Problem oder einen Teil des Codes zu helfen.

+0

Dito: Wenn mir das passiert, ist es entweder 1) Mangel an Page.IsPostBack check oder 2) Ich erfrischende statt mit einem PostBack – bentford

0

Dies kann den Holzweg, aber ein paar Dinge, die mich in der Vergangenheit gebissen haben, die ich meinen Kopf kratzen links:

  • Naming das Eingangselement ein duplizierte/reserviertes Wort (Denken " name“,‚Verfahren‘,‚Reset‘, etc.)
  • das Formularelement mit physisch außerhalb der Form

vorgelegt werden finde ich, dass, wenn alle logischen Debuggen auftauchen nichts, meine eigene Stummheit hat erstellt zeitwierige "Mystery" Bugs wie diese bei Gelegenheit.

+0

Ich bin mir ziemlich sicher, dass es etwas Dummes ist, was ich tue. – Haydar

+0

Der Name des Steuerelements, das Probleme verursacht, ist ddlTerms – Haydar

0

In welchem ​​Stadium des Seitenlebenszyklus binden Sie die Dropdown-Liste? Wenn Sie in page_init binden, sollte es funktionieren. Wenn Sie in page_load binden, stellen Sie sicher, dass Sie ein! IsPostBack um die Bindungsbefehle legen.

Wenn Sie den fraglichen Code veröffentlichen, wäre es einfacher, Fehler zu beheben.

+0

Ich fügte den Code hinzu, den ich in dem Ereignis page_load – Haydar

-1

Dies kann einfach ein Syntaxfehler sein, sollte aber nicht

If Page.IsPostBack Then 
      GetUIValues() 
     Else 

wie folgt aussehen

If NOT Page.IsPostBack Then 
     GetUIValues() 
    Else 
+0

verwenden kann, Sie können es EatherWay tun. Es gibt Dinge, die ich tun möchte, wenn die Seite zurückgebucht wird und andere, die ich tun möchte, wenn die Seite nicht zurückgeschlagen wird. – Haydar

+0

Dann möchte ich sagen, dass das Problem wahrscheinlich in einer dieser beiden Funktionen liegt, aber es ist schwer zu sagen, ohne zu wissen, was sie tun. – Gilligan

0

ich das gleiche Problem zu finden, ... in meinem Fall, die Dropdownlist ist gefüllt mit einer JavaScript-Funktion nach einer anderen Dropdown-Liste onchange client event. Auf PageLoad hat die 2. Dropdown-Liste alle ihre Elemente verloren, und so wird der selectedIndex auf 0 gesetzt. Gibt es eine Möglichkeit, dies zu verhindern?

Verwandte Themen