首页 文章

Asp.net updatepanel Listbox没有刷新布局

提问于
浏览
0

所以我的问题很简单,我有2个列表框和一个按钮 . 当在listbox2中选择一个项目并单击该按钮时,我想将所选项目添加到listbox1 .

在我添加第二个项目之前,所有接缝都能正常工作 . 那么listbox1不刷新它的项目......

<body>
<form id="form1" runat="server">
    <asp:ScriptManager runat="server"></asp:ScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
            <asp:ListBox ID="ListBox2" runat="server"></asp:ListBox>
                <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ListBox2.Items.Add(new ListItem("1", "1"));
            ListBox2.Items.Add(new ListItem("2", "2"));
            ListBox2.Items.Add(new ListItem("3", "3"));
            ListBox2.Items.Add(new ListItem("4", "4"));
            ListBox2.Items.Add(new ListItem("5", "5"));
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (ListBox2.SelectedIndex != -1)
        {
            ListBox1.Items.Add(ListBox2.SelectedItem);
        }
    }
}

2 回答

  • 2

    您可以将 UpdateMode=conditional 添加到 UpdatePanel

    并设置 <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />

    <asp:ScriptManager runat="server"></asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
                    <asp:ListBox ID="ListBox2" runat="server"></asp:ListBox>
                    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
                </ContentTemplate>
    
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
                </Triggers>
    
            </asp:UpdatePanel>
        </div>
    
  • 0

    找到解决方案:)问题是Listbox1 SelectionMode = Single ...所以当返回结果时,错误发生在客户端 . 解决方案是在将项目添加到其他列表之前取消选择该项目 . (或使用所选值中的值和文本制作新内容)

    protected void Button1_Click(object sender, EventArgs e)
        {
            if (ListBox2.SelectedIndex != -1)
            {
    
                ListItem item = ListBox2.SelectedItem;
                item.Selected = false;
                ListBox1.Items.Add(item);
    
            }
        }
    

相关问题