2009-08-10 76 views
3

我有以下的标记:ASP:列表框 - 回发没有选定的项目?

<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> 

而在后台代码如下:

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(); 
} 

当我步入代码隐藏绝对没有项目被选中!我忘了什么?

回答

7

你可能重新编写availableRolesListBox而不是if(!IsPostback)吗?

+0

啊废话!你明白了。我的Refresh()方法(重新填充大多数控件)超出了我的!Page.PostBack。 谢谢! – 2009-08-10 15:32:28

+0

不要觉得不好 - 这是一个容易犯的错误! – RichardOD 2009-08-10 15:38:38

+0

是的 - 太简单了!卫生署! – DilbertDave 2012-03-08 12:02:14

1

你可以检查一些东西。

CHeck你不会在每次回发后重新加载列表框。另外,您可能需要确保父容器没有ViewStateEnabled="false"

除此之外,您的代码看起来应该没问题,进一步调试将需要更多的代码或信息。

相关问题