【问题标题】:ASP:ListBox - no selected items on postback?ASP:ListBox - 回发时没有选定的项目?
【发布时间】:2009-08-10 15:17:12
【问题描述】:

我有以下标记:

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

当我进入代码隐藏时,绝对没有选择任何项目!我忘记了什么?

【问题讨论】:

    标签: asp.net listbox selecteditem


    【解决方案1】:

    您是否每次都重新绑定availableRolesListBox,而不是 if(!IsPostback)?

    【讨论】:

    • 啊废话!你把它弄到头上了。我的 Refresh() 方法(重新填充大多数控件)在我的 !Page.PostBack 之外。 谢谢!
    • 别难过——这是一个容易犯的错误!
    • 通常我必须在每个请求上创建动态控件(因此它们可以接收回发值)。在这种情况下,我仍然需要创建列表框,但我需要将其留空(将填充它的代码移动到 !IsPostBack 部分)。谢谢。
    【解决方案2】:

    你可以检查几件事。

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多