2009-08-10 5 views
3

J'ai le balisage suivant:ASP: ListBox - aucun article sélectionné en 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> 

Et ce qui suit dans le 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(); 
} 

Lorsque je fais un pas dans le code-behind absolument aucun élément sont sélectionnés! Qu'est-ce que j'oublie?

Répondre

7

Est-ce que vous affinez peut-être le availableRolesListBox à chaque fois, au lieu de if (! IsPostback)?

+0

Ah merde! Vous l'avez sur la tête. Ma méthode Refresh() (repopule la plupart des contrôles) était en dehors de mon! Page.PostBack. Merci! –

+0

Ne vous sentez pas mal, c'est une erreur facile à faire! – RichardOD

+0

Ouais - trop facile en effet! Doh! – DilbertDave

1

Vous pouvez vérifier quelques éléments.

CHeck que vous ne rechargez pas la zone de liste après chaque publication. En outre, vous souhaiterez peut-être vous assurer que vous n'avez pas ViewStateEnabled="false" pour un conteneur parent. A part cela, votre code semble devoir être ok, le débogage nécessiterait plus de code ou d'informations.

Questions connexes