selectedIndex ist verloren, während der postbacks - ASP.NET

Habe ich ein Listenfeld-Steuerelement:


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

Den code hinter ä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 erhält ein post zurück (wenn ein Benutzer eine Auswahl in der listbox), die Auswahl immer "springt", um das erste Element in der listbox, so dass die index-variable in meine callback-Funktion ist immer 0.

Scheint, so kann dies ein viewstate-problem? Wie kann ich es beheben, so dass der Auswahl-index bleibt durch das postback?

Es gibt keine ajax Los, das ist .NET 1.0.

Dank.

BEARBEITEN 1 JohnIdol bekommen hat mich einen Schritt näher, Wenn ich schalten Sie die datasource aus meiner ursprünglichen DataTable zu einer ArrayList, dann alles richtig funktionieren...was würde das verursachen?

Edit 2 Es stellt sich heraus, dass meine DataTable hatten mehrere Werte waren die gleichen, so dass die Indizes wurden so behandelt, als das gleiche wie alle Elemente mit dem gleichen Wert...danke an alle die geholfen haben!

genau die gleichen Sachen auf .NET 2.0 funktioniert gut für mich
froh zu sehen, Ihr problem ist gelöst

InformationsquelleAutor mmattax | 2008-12-03

Schreibe einen Kommentar