DotNetLover_Baan
asked on
Get ValueMembers from a Databound Multiselect ListBox
Hi everybody,
I am kinda stuck with this. Let me explain...
This is a Windows Application. I have a listbox that is bound to a dataset table.
SqlCon.Open()
DA.Fill(DS) 'DA is Adapter, DS is DataSet
SqlCon.Close()
ListBox1.DisplayMember = "EmpName"
ListBox1.ValueMember = "EmpID"
ListBox1.DataSource = DS.Tables(0)
Everything works fine. Now all I need is to get the ValueMembers for selected items in the list box. Lets make a string with all the values...
Dim itm As Object
Dim ValueString As String = "Selected Values are : "
For Each itm In ListBox1.SelectedItems
ValueString &= ListBox1.SelectedValue.ToS tring() & ", "
Next
MsgBox(ValueString)
========================== =
What I am getting now:
If I select only a single Item, I get the right value.
But, when I select multiple items, it gives me the first value all the time. What I meant is, say I selected 3 items, and my first VALUE is 40. Then my ValueString is : "Selected Values are : 40, 40, 40, "... this is what I am getting.
Need to get it right ... anybody ??
-Baan
I am kinda stuck with this. Let me explain...
This is a Windows Application. I have a listbox that is bound to a dataset table.
SqlCon.Open()
DA.Fill(DS) 'DA is Adapter, DS is DataSet
SqlCon.Close()
ListBox1.DisplayMember = "EmpName"
ListBox1.ValueMember = "EmpID"
ListBox1.DataSource = DS.Tables(0)
Everything works fine. Now all I need is to get the ValueMembers for selected items in the list box. Lets make a string with all the values...
Dim itm As Object
Dim ValueString As String = "Selected Values are : "
For Each itm In ListBox1.SelectedItems
ValueString &= ListBox1.SelectedValue.ToS
Next
MsgBox(ValueString)
==========================
What I am getting now:
If I select only a single Item, I get the right value.
But, when I select multiple items, it gives me the first value all the time. What I meant is, say I selected 3 items, and my first VALUE is 40. Then my ValueString is : "Selected Values are : 40, 40, 40, "... this is what I am getting.
Need to get it right ... anybody ??
-Baan
ASKER
no good...
let me make it clearer... I am trying to get the "SelectedValue"s behind the displayed Items.
let me make it clearer... I am trying to get the "SelectedValue"s behind the displayed Items.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Still having problem with... >> ValueString += ListBox1.SelectedValue.ToS tring + ", " <<
Anyway I found a work arround. Instead of multi-selection, I am coding for the DoubleClick event of the ListBox. I am making the user to work with single item at a time.
I will leave this post open for couple of days, for a decent solution to this. I am also trying. If I don't find any solution , I will award you the points for working with me.
BUT , please don't disregard this question, its a very important matter, we never thought.
Thanks for your help... :)
-Baan
Anyway I found a work arround. Instead of multi-selection, I am coding for the DoubleClick event of the ListBox. I am making the user to work with single item at a time.
I will leave this post open for couple of days, for a decent solution to this. I am also trying. If I don't find any solution , I will award you the points for working with me.
BUT , please don't disregard this question, its a very important matter, we never thought.
Thanks for your help... :)
-Baan
what problem are you having, i set up everything, dataset, adapter, valuemember, displaymember, everything....and it works perfectly for me....
'this gets the first value (just like you got)
ValueString += ListBox1.SelectedValue.ToS tring + ", "
'this gets teh index of the selected value
index = ListBox1.SelectedIndices.I tem(0)
'this deselects the first value (so you have another "first" one the next loop around)
ListBox1.SetSelected(index , False)
if you go into the debugger, itll show you that the number of selected indices shrinks. let me know your problem, i spent a couple hours trying to figure this out....
'this gets the first value (just like you got)
ValueString += ListBox1.SelectedValue.ToS
'this gets teh index of the selected value
index = ListBox1.SelectedIndices.I
'this deselects the first value (so you have another "first" one the next loop around)
ListBox1.SetSelected(index
if you go into the debugger, itll show you that the number of selected indices shrinks. let me know your problem, i spent a couple hours trying to figure this out....
ASKER
Thanks for your help.
I know this is working. I tested it, and it works fine for me too. But the application I am working on is quite a bit different. Everytime I tried that, it selects System.DataView... this happens when there is some error on selecting data or, when somehow table inside the dataset becomes NULL. I guess my problem is somewhere else. Anyway, thanks for you help. By the way... you did a real good job here. Thanks again.
You have answered my question perfectly... you deserve the points. :)
I know this is working. I tested it, and it works fine for me too. But the application I am working on is quite a bit different. Everytime I tried that, it selects System.DataView... this happens when there is some error on selecting data or, when somehow table inside the dataset becomes NULL. I guess my problem is somewhere else. Anyway, thanks for you help. By the way... you did a real good job here. Thanks again.
You have answered my question perfectly... you deserve the points. :)
Dim ValueString As String = "Selected Values are : "
Dim i As Integer
For i = 0 To ListBox1.SelectedItems.Cou
ValueString += ListBox1.SelectedItems.Ite
Next
~b