Multiple select listbox values in query

D

DC Gringo

I have two listboxes, the first of which is an autopostback=true that allows
multiple row selection. When I select multiple values (by holding down CTL)
in the first one, it should query the second one. I seem unable to do this
as it only sends back the first item I select whether I have the CTL key
down or not. Upon the return trip, I can select another one, but it still
only sends value for the last one I selected.

-- MY LISTBOX --

<asp:ListBox ID="lbProvinces" runat="server" Font-Size="8pt" width="150px"
EnableViewState="true" OnSelectedIndexChanged="ddlQueryDistricts"
autopostback="true" SelectionMode="Multiple" Rows="3"></asp:ListBox>


-- MY CODE --

Sub ddlQueryDistricts(ByVal sender As Object, ByVal e As EventArgs)

Dim conString As String =
"server=myserver;database=mydb;uid=myuser;pwd=mypwd;"

Dim _sqlStmtLbDistricts As String

If lbProvinces.SelectedItem.Value <> "0" Then
_sqlStmtLbDistricts = "SELECT tblDistrict.clnGUID, tblDistrict.clnName
FROM tblDistrict WHERE tblDistrict.clnProvinceGUID = '" &
lbProvinces.SelectedItem.Value & "' ORDER BY tblDistrict.clnName"
Else
_sqlStmtLbDistricts = "SELECT tblDistrict.clnGUID, tblDistrict.clnName
FROM tblDistrict ORDER BY tblDistrict.clnName"
End If

Dim myDataSetDistricts As New DataSet
Dim myDataAdapterDistricts As New
SqlDataAdapter(_sqlStmtLbDistricts, conString)
myDataAdapterDistricts.Fill(myDataSetDistricts, "DistrictsTmp")
lbDistricts.Datasource = myDataSetDistricts.Tables("DistrictsTmp")
lbDistricts.DataMember = "DistrictsTmp"
lbDistricts.DataTextField = "clnName"
lbDistricts.DataValueField = "clnGUID"
lbDistricts.DataBind()
lbDistricts.Items.Insert(0,New ListItem("--ALL","0"))

End Sub
 
J

Jos

DC said:
I have two listboxes, the first of which is an autopostback=true that
allows multiple row selection. When I select multiple values (by
holding down CTL) in the first one, it should query the second one.
I seem unable to do this as it only sends back the first item I
select whether I have the CTL key down or not. Upon the return trip,
I can select another one, but it still only sends value for the last
one I selected.

You need to make a loop to find out which items are selected:

Dim li As ListItem
For Each li In lbProvinces.Items
If li.Selected Then
' handle li.Value here
End If
Next li
 
V

Viktor Jevdokimov

To autopostback your listbox uses clientside JavaScript, which fires a click
event exactly on the item you just clicked and placing its value as an event
argument. So you can't send more than one value. How can you determine,
clicking on which item script should make a decisiion, that it is time to
collect all selected values and send them back? So simply never use
autopostback on multiselect listboxes :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top