【问题标题】:ASP.NET Display Selected Items from Listbox in TextboxASP.NET 在文本框中显示列表框中的选定项
【发布时间】:2009-05-17 05:12:21
【问题描述】:

我正在尝试将列表框中的所有选定项目显示到文本框中。目前我正在执行以下操作但没有成功:

For i As Integer = 0 To lb_words.ListCount
    If lb_words.Selected(i) = True Then
        tb_text.Text &= " Presto"
    End If
Next

应该发生的是,对于我的列表框 (lb.words) 中的每个选定项目,我希望它被附加到我的文本框中。假设我的列表框包含 Apple、Orange 和 Banana,并且我选择 Apple 和 Banana,我的文本框文本应为“Apple Banana”...

我刚刚向自己介绍了 ASP.NET,所以请保持简单:D 谢谢。

【问题讨论】:

  • 可能与您的问题有关 - MsgBox 在服务器端代码中不起作用。它不会在客户端显示消息,而且它肯定不会在服务器上显示消息:-)
  • 好的,我删除了消息框的东西...我更关注循环而不是结果...看到我的循环是问题

标签: asp.net visual-studio textbox listbox loops


【解决方案1】:

试试这个:

Dim s as String = ""

For each x as ListItem in lb_words.Items
     if x.Selected Then s &= x.Text & " "
Next

【讨论】:

  • 使用 StringBuilder 会更有效率。
  • 是的,但他要求简单,附加到字符串比处理字符串构建器更简单
  • 这段代码看起来很有希望,但是我收到了'ListBoxItem'和'x.isselected'的错误......我应该注意我有Option Explicit和String On吗? ListBoxItem 错误让我可以选择用 ListItem 或 ListBox 替换它
  • @tmhai - IsSelected 应该被选中。并且 listboxitem 应该是 ListItem。我将错误归咎于午夜
  • 我唯一的带有 variable.selected 的选项是 .selecteditem、.selectedcvalue 或 .selectedindex...
【解决方案2】:
        foreach (ListItem Mail in ListBox1.Items)
        {
            if (Mail.Selected)
            {
                Mail.Selected = true+",";
                mail.To.Add(Mail.ToString());                                   
            }

【讨论】:

    【解决方案3】:

    aspx 页面:

       <asp:ListBox ID="myList" runat="server" SelectionMode="Multiple">
            <asp:ListItem>Apple</asp:ListItem>
            <asp:ListItem>Orange</asp:ListItem>
            <asp:ListItem>Grapes</asp:ListItem>
       </asp:ListBox>
       <br/>
       <asp:TextBox id="myText" runat="server"></asp:TextBox>
    

    代码隐藏 (C#)

     StringBuilder sb=new StringBuilder();
            for (int i = 0; i < myList.Items.Count; i++)
                sb.Append(myList.Items[i].Selected ? myList.Items[i].Text + " " : "");
     myText.Text=sb.ToString();
    

    【讨论】:

      【解决方案4】:

      如果您使用的是数据绑定列表框,请使用按钮单击事件尝试此代码:

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          For Each objDataRowView As DataRowView In Me.ListBox1.SelectedItems
              Me.TextBox1.Text &= (objDataRowView("ITEM LIST").ToString() & " ; ")
              'here "ITEM LIST" is the "column name" which is used as DATASOURCE for LISTBOX1
          Next
      End Sub
      

      【讨论】:

        【解决方案5】:

        一种解决方案是覆盖 .ToString() 方法以连接列表中的所有值。

        【讨论】:

        • 问题是他不想要所有的值,只想要用户选择的值
        【解决方案6】:

        您可以使用 lb_words.SelectedItems 而不是遍历所有记录并在其中查找所选项目。您可以使用以下代码:

                Dim s As New StringBuilder()
        
                For Each item As Object In Me.lb_words.SelectedItems
                    s.Append(item)
                    s.Append(" ")
                Next
        
                Me.TextBox1.Text = s.ToString()
        

        如果您选择 Apple & Banana,您的文本框将包含“Apple Banana”

        【讨论】:

        • 一个 asp.net 列表框没有 SelectedItems 方法
        【解决方案7】:
         protected void Button1_Click(object sender, EventArgs e)
        {
            //to display multiple items
            String it =" ";
            foreach (ListItem item in listbox.Items)
            {
                if (item.Selected)
                {
                    it = it + ", " + item.Text;
                }
                Label1.Text = it;
            }
        
        }
        

        【讨论】:

        • 使用此代码,如果您添加了属性 (SelectionMode = "Multiple"),则可以显示多个项目,而不是 (ListBox) Web 服务器控件中的一个项目
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多