2016-05-20 17 views
0

私はVBを使用しています。リストボックスからバックエンドコードからマルチアイテムを選択するには?バックエンドコード(VB)からリストボックスで複数項目を選択するにはどうすればよいですか?

以下、私はユーザーがmutiアイテムを選択できるリストボックスを持っています。

<asp:ListBox ID="lb" SelectionMode="multiple" runat="server" DataValueField="dv"> 
     <asp:ListItem>red r</asp:ListItem> 
     <asp:ListItem>blue b</asp:ListItem> 
     <asp:ListItem>green g</asp:ListItem> 
</asp:ListBox> 

私はこれまでtierd持っているもの:私は「青B」と「グリーングラム」の値がすでに選択されているように設定することができます

どのように?私はsetSelectedを試しましたが、この方法はサポートされていません。

lb.SetSelected(1, True) 
lb.SetSelected(2, True) 

私はこれを以下のように動作させました。それは1つの値を選択しますが、私は複数の値を選択する必要があります。

lb.Text = "blue b" 
lb.Text = "green g" 

私もこれを試しましたが、値を選択しませんでした。

lb.Text = "blue b green g" 
+0

私はここに戻って、なぜテキストがあなたのために動作していたのかを伝えたいと考えました。 Textプロパティを使用すると、現在選択されている項目を取得または設定できます。このケースでは、強調表示されているわけではありません。代わりに、selectedは、現在フォーカスを持っている項目を意味します。アイテムを選択すると、これが表示されます。焦点を合わせると、ハイライトに加えて、その周りに境界線が表示されます。これを理解すると、コードが何をしているのか理解する必要があります。 –

答えて

1

このループを使用してみてください。変数のハードコードされた青のb値を変更する必要があります。 ASP.netの代わりに.Netと思っていた同様の投稿に私は答えました。 SetSelectedメソッドはASP.netでは使用できません。 Forループ

:各ループの

For i As Integer = 0 To listbox.Items.Count - 1 Step 1 
    If listbox.Items(i).Value = "blue b" Then 
     listbox.Items(i).Selected = true 
    End If 
Next 

For Each item As ListItem In ListBox.Items 
    If item.Value = "blue b" Then 
     item.Selected = True 
    End If 
Next 

あなたはまた、ループせずにこれを試みることができる:
を私はあなただけのループを通過することができるので、これは好ましい方法であると言うでしょう選択したい値のリストを入力し、このコード行を使用します。変更する必要があるのは、FindByValue内の文字列だけです。

listbox.Items(listbox.Items.IndexOf(listbox.Items.FindByValue("blue b"))).Selected = True 
+0

ありがとう! ListBoxItemでエ​​ラーが発生する - ListBoxItemが定義されていない – user1924249

+0

新しいループを試す –

+0

ループの代わりに使用できるIndexOf()メソッドを探しています。 –

0

これはトリックを行う必要があります:、

lb.Items(1).Selected = True 
lb.Items(2).Selected = True 

そして、あなたのポストバックコード内をlb.GetSelectedIndicesでユーザーが選択した値を取得します。