2009-08-10 3 views
3

Ich habe folgendes Markup:ASP: ListBox - keine ausgewählten Elemente auf Postback?

<tr> 
    <td valign="top" align="left"> 
     <asp:Label ID="Label1" runat="server" Text="Available Roles" /> 
     <br /> 
     <asp:ListBox ID="availableRolesListBox" runat="server" SelectionMode="Multiple" Width="100px" Rows="10" AutoPostBack="false" /> 
    </td> 
    <td valign="top" align="center"> 
     &nbsp; 
     <br /> 
     <asp:Button ID="addToRole" runat="server" Text="--->" OnClick="addToRole_Click" /> 
     <br /> 
     <asp:Button ID="removeFromRole" runat="server" Text="<---" OnClick="removeFromRole_Click" /> 
    </td> 
    <td valign="top" align="left"> 
     <asp:Label ID="Label2" runat="server" Text="User In Roles" /> 
     <br /> 
     <asp:ListBox ID="userInRolesListBox" runat="server" SelectionMode="Multiple" Width="100px" Rows="10" AutoPostBack="false" /> 
    </td> 
</tr> 

und die folgenden in Code-Behind:

protected void addToRole_Click(object sender, EventArgs e) 
{ 
    // Add user to the selected role... 
    foreach (ListItem myItem in availableRolesListBox.Items) 
    { 
     if (myItem.Selected) 
     { 
      Roles.AddUserToRole(userListBox.SelectedItem.Value, myItem.Text); 
     } 
    } 

    Refresh(); 
} 

Als ich in den Schritt Code-Behind absolut keine Elemente ausgewählt werden! Was vergesse ich?

Antwort

7

Sind Sie vielleicht die availableRolesListBox jedes Mal neu binden, statt wenn (! IsPostback)?

+0

Ah Mist! Du hast es auf den Kopf bekommen. Meine Refresh() -Methode (repopuliert die meisten Steuerelemente) war außerhalb meiner! Page.PostBack. Danke! –

+0

Fühlen Sie sich nicht schlecht - es ist ein einfacher Fehler zu machen! – RichardOD

+0

Ja - zu einfach in der Tat! Do! – DilbertDave

1

Sie könnten ein paar Dinge überprüfen.

Überprüfen Sie, dass Sie die Listbox NICHT nach jedem Postback neu laden. Vielleicht möchten Sie auch sicherstellen, dass Sie keinen ViewStateEnabled="false" für einen übergeordneten Container haben.

Ansonsten sieht Ihr Code so aus, als ob er in Ordnung sein sollte, ein Debuggen weiterer Codes würde mehr Code oder Informationen erfordern.