Ich habe den Artikel TRULLY Understanding ViewState (großer Artikel btw) folgen und füllen meine Dropdown-Liste funktioniert super. Ich habe sogar ein OnSelectedIndexChange-Event eingerichtet, das fast genauso gut abfeuert.DropDownList OnSelectedIndexChange zu 0. Index w/out ViewState
Das Problem, das ich gefunden habe, ist das SelectedIndexChanged Ereignis wird nicht ausgelöst, wenn Sie den 0. Index auswählen. Es macht aber alle anderen Zeiten.
Hier einige Code:
<asp:DropDownList runat="server" ID="DropDownList1" EnableViewState="false"
AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" />
protected override void OnInit(EventArgs e)
{
this.DropDownList1.DataTextField = "Text";
this.DropDownList1.DataValueField = "Value";
this.DropDownList1.DataSource = fillQueueDropDown();
this.DropDownList1.DataBind();
base.OnInit(e);
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
OnSelectedQueueChanged(e);
}
public void OnSelectedQueueChanged(EventArgs e)
{
// Do stuff.
}
public event EventHandler queueNamesChangedEvent;
public void OnSelectedQueueChanged(EventArgs e)
{
if (queueNamesChangedEvent != null)
queueNamesChangedEvent(this, e);
}
Ich nehme ich an in der Page_Load-Methode eine Art Scheck tun können:
if(ViewState["selectedIndexChangedFlag"] != 1)
// raise OnSelectedChange event
Oder gibt es etwas, was ich kann Setup in der OnInit() -Methode, wo ich diese Daten immer wieder verbinde, die ich tun kann?
Sehen Sie, mein benutzerdefinierter EventHander löst ein Ereignis aus, das von einer übergeordneten Seite abgefangen wird, in der sich dieses Steuerelement befindet, damit das übergeordnete Element mit dem neu ausgewählten Wert eine Aktion ausführen kann. Dies funktioniert derzeit für alle Fälle, in denen der ausgewählte Index> 0 ist.
Ich erstelle in diesem Steuerelement eine Eigenschaft, die den zuletzt ausgewählten Index enthält. In diesem Fall kann meine übergeordnete Seite bei jedem Page_Load auf diesen Eigenschaftswert zugreifen. .. Keine Ahnung.
Offen für Vorschläge. Oder wie Sie dieses SelectedIndexChanged-Ereignis erzwingen, dass es für die 0. Indexauswahl ausgelöst wird.
+1 Sehr schön - dies ist eine hervorragende Möglichkeit, dies ohne ViewState zu tun! Tut mir leid, ich habe nicht bemerkt, dass du ViewState nicht willst - ich werde die Frage beim nächsten Mal genauer lesen. –
Vielen Dank für Ihre erste Lösung, es hat wirklich dazu beigetragen, etwas Licht in die Reihenfolge der Dinge zu bringen. Ich denke, ich kenne den asp.net Seitenlebenszyklus nicht so gut, wie ich dachte. –