繁体   English   中英

如何在Web表单上将项目从一个列表框添加到另一个列表框

[英]how add item from one listbox to another on web form

我有两个列表框和一个按钮。 我需要通过单击按钮将所选项目从一个列表框添加到另一个列表框。

在此输入图像描述

这是按钮的代码

protected void ASPxButton4_Click(object sender, EventArgs e)
    {
        if (listBoxSubeKiyaslama1.SelectedIndex > -1)
        {
            listBoxSubeKiyaslama2.Items.Add(listBoxSubeKiyaslama1.SelectedItem);
            listBoxSubeKiyaslama2.Items.RemoveAt(listBoxSubeKiyaslama1.SelectedIndex);
            listBoxSubeKiyaslama2.UnselectAll();
        }
    }

当我单击按钮时,我看到listBoxSubeKiyaslama1.SelectedIndex始终为“-1”。 因为我认为它会回发并清除第一个列表框中的项目。 我怎样才能解决这个问题?

你能试试下面的代码:

    if (listBoxSubeKiyaslama1.SelectedItem != null)
    {
        listBoxSubeKiyaslama2.Items.Add(listBoxSubeKiyaslama1.SelectedItem);
        listBoxSubeKiyaslama2.Items.RemoveAt(listBoxSubeKiyaslama1.SelectedIndex);
        listBoxSubeKiyaslama2.UnselectAll();
    }

如果EnableViewState = false则控件将不会保存回发值。 默认情况下,这是真的。 请确保您没有将其设置为false

我还建议您将控件放在UpdatePanel以避免完全回发。

喜欢:

<asp:UpdatePanel ID="up1" runat="Server">
    <ContentTemplate>
        <asp:ListBox ID="listBoxSubeKiyaslama1" runat="server">
        </asp:ListBox>
        <asp:ListBox ID="listBoxSubeKiyaslama2" runat="server">
        </asp:ListBox>
    </ContentTemplate>
</asp:UpdatePanel>

请尝试以下代码: -

ASPX.CS

public string GetSelectedItems(ListBox control)
    {
        var items = new StringBuilder();
        foreach (ListItem item in control.Items)
        {
            if (item.Selected)
                items.Append(string.Format("{0},", item.Value));
        }
        return items.ToString().Trim().TrimEnd(',');
    }
    protected void btnMoveRight_Click(object sender, EventArgs e)
    {
        for (int i = lbCourses1.Items.Count - 1; i >= 0; i--)
        {
            if (lbCourses1.Items[i].Selected == true)
            {
                lbCourses2.Items.Add(lbCourses1.Items[i]);
                ListItem li = lbCourses1.Items[i];
                lbCourses1.Items.Remove(li);
            }
        }
    }
    protected void btnMoveLeft_Click(object sender, EventArgs e)
    {
        for (int i = lbCourses2.Items.Count - 1; i >= 0; i--)
        {
            if (lbCourses2.Items[i].Selected == true)
            {
                lbCourses1.Items.Add(lbCourses2.Items[i]);
                ListItem li = lbCourses2.Items[i];
                lbCourses2.Items.Remove(li);
            }
        }
    }

    var selectedValues =  GetSelectedItems(lb2);

ASPX

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
            <asp:Label ID="lbl1" runat="server" Text="lbl1:"></asp:Label>
            <asp:ListBox ID="lb1" runat="server" SelectionMode="Multiple"></asp:ListBox>
            <asp:Button Runat="server" ID="btnMoveRight" Text=">>" 
            onclick="btnMoveRight_Click"></asp:Button>
            <asp:Button Runat="server" ID="btnMoveLeft" Text="<<" 
            onclick="btnMoveLeft_Click"></asp:Button>
            <asp:ListBox ID="lb2" runat="server" SelectionMode="Multiple"></asp:ListBox>
        </div>
</ContentTemplate>
</asp:UpdatePanel>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM