ASP.NET文本框显示列表框中所选项目

4

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

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)中选择的每个项目都添加到文本框中。例如,如果列表框包含苹果、橙子和香蕉,并且我选择了苹果和香蕉,则我的文本框应显示“苹果 香蕉”...

我刚接触ASP.NET,请保持简单 :D 谢谢。


可能与您的问题有关的内容 - MsgBox 在服务器端代码中无法工作。它不会在客户端显示消息,当然也不会在服务器上显示消息 :-) - Dan F
好的,我已经移除了消息框的内容... 我更关注循环而不是结果... 因为我的循环是问题所在。 - user77482
7个回答

3
        foreach (ListItem Mail in ListBox1.Items)
        {
            if (Mail.Selected)
            {
                Mail.Selected = true+",";
                mail.To.Add(Mail.ToString());                                   
            }

3

试试这个:

Dim s as String = ""

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

使用 StringBuilder 会更高效。 - Wayne Hartman
是的,但他要求简单,将字符串附加到另一个字符串比处理字符串构建器更简单。 - Stephen Wrighton
这段代码看起来很有前途,但是我遇到了“ListBoxItem”和“x.isselected”的错误……我应该注意到我已经打开了Option Explicit和String On吗?ListBoxItem错误给了我用ListItem或ListBox替换它的选项。 - user77482
@tmhai - IsSelected 应该是 Selected。而且 listboxitem 应该是 ListItem。我把这些错误归咎于深夜。 - Stephen Wrighton
我的变量.selected 的唯一选项是 .selecteditem、.selectedcvalue 或 .selectedindex... - Brian McCarthy

1

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

1
如果您正在使用数据绑定的列表框,则可以尝试使用以下代码来处理按钮单击事件:
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

0
 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;
    }

}

使用此代码,您可以从(ListBox)Web服务器控件中显示多个项目而不是一个,如果您添加了属性(SelectionMode =“Multiple”)。 - Malak

0
一个解决方案是重写.ToString()方法,将列表中的所有值连接起来。

问题在于他不想要所有的值,只想要用户选择的值。 - Stephen Wrighton

0
你可以使用 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()

如果您选择了苹果和香蕉,那么您的文本框将包含“苹果香蕉”。


一个ASP.NET的列表框没有SelectedItems方法。 - Dan F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接