如何在asp.net列表框中获取多个选定的项目并显示在文本框中?

时间:2017-07-24 10:24:39

标签: c# asp.net .net ado.net

我正在尝试将列表框中的所选项目添加到文本框中,并将逗号分隔在彼此之间。但它每次只读取所选项目的第一个元素。如果我选​​择三个值,按住ctrl,它只传递所选项目的第一个元素

if (ListBox1.SelectedItem != null)
        {

            //   int count = ListBox1.SelectedItems.Count;
            if (TextBox1.Text == "")
                TextBox1.Text += ListBox1.SelectedItem.ToString();
            else
                TextBox1.Text += "," + ListBox1.SelectedItem.ToString();
        }

如果列表框包含:1,2,3,4 textbox中的示例输出:1,1,1,1 预期输出:1,2,3,4(对于evry选择,它不应再显示已经选择的值)

3 个答案:

答案 0 :(得分:2)

ListBox具有SelectedItems属性,您可以迭代:

foreach (var item in ListBox1.SelectedItems)
{
    TextBox1.Text += "," + item.ToString();
}

最后你需要删除第一个","因为它将在第一个项目字符串表示之前:

TextBox1.Text = TextBox1.Text.Substring(1, TextBox1.Text.Legth - 1);

答案 1 :(得分:2)

var selectedItemText =   new List<string>();
    foreach (var li in ListBox1.Items)
    {
       if (li.Selected == true)
        {
         selectedItemText.Add(li.Text);
        }
    }

然后

var result =   string.Join(selectedItemText,",");

答案 2 :(得分:0)

试试这个

 var selected =  string.Join(",", yourListBox.Items.GetSelectedItems());

public static class Extensions
{
    public static IEnumerable<ListItem> GetSelectedItems(
           this ListItemCollection items)
    {
        return items.OfType<ListItem>().Where(item => item.Selected);
    }
}