ASP: ListBox - нет выбранных элементов для обратной передачи? - PullRequest
3 голосов
/ 10 августа 2009

У меня есть следующая разметка:

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

Когда я захожу в код позади, абсолютно ничего не выбирается! Что я забыл?

Ответы [ 2 ]

7 голосов
/ 10 августа 2009

Возможно, вы связываете availableRolesListBox каждый раз вместо if (! IsPostback)?

1 голос
/ 10 августа 2009

Вы можете проверить несколько вещей.

Убедитесь, что вы НЕ перезагружаете список после каждой обратной передачи. Кроме того, вы можете убедиться, что у вас нет ViewStateEnabled="false" для родительского контейнера.

Кроме того, ваш код выглядит нормально; для дальнейшей отладки потребуется больше кода или информации.

...