2009-05-17 13 views
4

J'essaie d'afficher tous les éléments sélectionnés à partir d'une zone de liste dans une zone de texte. Actuellement, je suis en train de faire ce qui suit sans succès:ASP.NET Afficher les éléments sélectionnés de la zone de liste dans la zone de texte

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

qui devrait se passer est que pour chaque élément sélectionné dans ma zone de liste (lb.words) Je veux qu'il soit ajouté à ma zone de texte. Alors dis ma liste contient Apple, Orange et Banana et je sélectionne Apple et Banana, mon texte de zone de texte devrait lire "Apple Banana" ...

Je viens de me présenter à ASP.NET alors gardez les choses simples: D Merci .

+0

Quelque chose peut-être lié à votre problème - MsgBox ne fonctionnera pas dans le code côté serveur. Il n'affichera pas de message sur le client, et il est certain que le message ne s'affichera pas sur le serveur :-) –

+0

ok, j'ai supprimé les messages de la boîte aux lettres ... Je me concentrais plus sur la boucle que sur le résultat. .. voyant que mes boucles sont le problème – Bobby

Répondre

3

Essayez ceci:

Dim s as String = "" 

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

L'utilisation d'un StringBuilder serait plus efficace. –

+0

oui, mais il a demandé simple, et l'ajout à une chaîne est plus simple que de traiter avec les constructeurs de chaînes –

+0

Ce code semble prometteur, mais je reçois des erreurs pour 'ListBoxItem' amd 'x.isselected' ... dois-je noter que J'ai l'option Explicit et String On? L'erreur ListBoxItem me donne l'option de le remplacer par ListItem ou ListBox – Bobby

0

Une solution serait de remplacer la méthode ToString() pour concaténer toutes les valeurs dans votre liste.

+0

la chose est qu'il ne veut pas toutes les valeurs, juste les valeurs qui ont été sélectionnées par l'utilisateur –

1

page 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> 

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

Vous pouvez utiliser lb_words.SelectedItems au lieu de boucle à travers tous les enregistrements et de trouver les éléments sélectionnés parmi eux. Vous pouvez utiliser le code suivant:

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

Si vous sélectionnez Banana d'Apple &, votre zone de texte contiendra Apple Banana '

+0

un asp. net listbox n'a pas de méthode SelectedItems –

1

Si vous utilisez databound listbox essayez ce code à l'aide événement click bouton:

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 
3
 foreach (ListItem Mail in ListBox1.Items) 
     { 
      if (Mail.Selected) 
      { 
       Mail.Selected = true+","; 
       mail.To.Add(Mail.ToString());         
      } 
Questions connexes