2016-04-14 5 views
2

Ich habe ein Problem, wenn ich versuche, in asp: listbox in Codebehind selectedindex zu bekommen, bleibt es immer -1, sogar auf der Seite, die es ausgewählt ist. Ich aktualisiere diese Liste jede Minute vollständig. Zum Laden von listItems wird die gesamte Liste gelöscht und wieder zurückgeschrieben.Listbox SelectedIndex gibt immer -1

Codebeispiele:

<asp:ListBox ID="ListBox1" runat="server" 
    OnSelectedIndexChanged="ListBox1_SelectedIndexChanged" 
    AutoPostBack="false">     
</asp:ListBox> 

In Code-Behind:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    itemsIndex = ListBox1.SelectedIndex.ToString(); //It is always -1 
    itemToBeRescheduled = ListBox1.SelectedItem.Value; 
} 

mit Versuchen wenn .. aber der Index blieb -1 und es nur meine Elemente aus der Liste gelöscht (IsPostBack!).

Vielen Dank im Voraus!

+0

AutoPostBack = "false"? – user34660

+0

Unabhängig davon, ob es wahr oder falsch ist, der ausgewählte Index ist -1, aber wenn er auf true gesetzt ist, dürfen Elemente in der Liste nicht ausgewählt werden. –

+2

Sie sollten AutoPostBack aktiviert haben und den ausgewählten Index abrufen, bevor Sie alle Elemente entfernen. Sie müssen prüfen, ob die Art, wie Sie die Liste jede Minute aktualisieren, dazu führt, dass der ausgewählte Index verloren geht. –

Antwort

2

Meiner Erfahrung nach passiert es, wenn Sie ListView erneut auf Postbacks binden. Um dies zu verhindern, legen wir normalerweise innerhalb ! IsPostback.

Zum Beispiel

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     ListBox1.DataSource = new List<ListItem>() 
     { 
      new ListItem("One", "1"), 
      new ListItem("Two", "2"), 
      new ListItem("Three", "3") 
     }; 
     ListBox1.DataBind(); 
    } 
} 
+0

Dieser Postback funktioniert gut, aber nur ein einziges Mal bei pageload, wie aktualisiere ich die Liste mit dynamisch erscheinenden und nicht mehr vorhandenen listItems? –

0

Wenn ich habe:

<asp:ListBox ID="ListBox1" runat="server" Height="140px" Width="290px" Font-Size="22px" autopostback="true" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"> 
<asp:ListItem>Item 1</asp:ListItem> 
<asp:ListItem>Item 2</asp:ListItem> 
<asp:ListItem>Item 3</asp:ListItem> 
<asp:ListItem>Item 4</asp:ListItem> 
<asp:ListItem>Item 5</asp:ListItem> 
<asp:ListItem>Item 6</asp:ListItem> 
</asp:ListBox> 
<br /> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 

Und:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ListBox1.SelectedIndex == -1) 
     TextBox1.Text = "-1"; 
    else 
     TextBox1.Text = ListBox1.SelectedItem.Text; 
} 

Ich habe nicht ListBox1.SelectedIndex = -1.

Verwandte Themen