selectedIndex geht bei Postbacks verloren - ASP.NET

Ich habe ein Listenfeld-Steuerelement:


<asp:ListBox runat="server" id="lbox" autoPostBack="true" />

Der Code dahinter ähnelt:


private void Page_Load(object sender, System.EventArgs e)
{
    lbox.SelectedIndexChanged+=new EventHandler(lbox_SelectedIndexChanged);
    if(!Page.IsPostBack)
    {
        LoadData();     
    }
}
private LoadData()
{
    lbox.DataSource = foo();
    lbox.DataBind();
}
protected void lboxScorecard_SelectedIndexChanged(object sender, EventArgs e)
{
    int index = (sender as ListBox).selectedIndex;
}

Mein Problem ist, dass, wenn meine Seite einen Beitrag zurückerhält (wenn ein Benutzer eine Auswahl in der Listbox trifft), die Auswahl immer zum ersten Element in der Listbox "springt", so dass die Indexvariable in meiner Rückruffunktion immer 0 ist .

Scheint, dass dies ein Viewstate-Problem sein kann? Wie kann ich das beheben, damit der Auswahlindex durch das Postback erhalten bleibt?

Es gibt kein Ajax, das ist .NET 1.0.

Vielen Dank

EDIT 1 JohnIdol hat mich einen Schritt näher gebracht. Wenn ich die Datenquelle von meiner ursprünglichen DataTable auf eine ArrayList umstelle, funktioniert alles ordnungsgemäß. Was würde dies verursachen?

Edit 2 Es stellte sich heraus, dass meine DataTable mehrere Werte hatte, die gleich waren, so dass die Indizes wie alle Elemente mit dem gleichen Wert behandelt wurden ... danke an diejenigen, die geholfen haben!

Antworten auf die Frage(18)

Ihre Antwort auf die Frage