By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,825 Members | 1,255 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,825 IT Pros & Developers. It's quick & easy.

Multiple select listbox values in query

P: n/a
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=mypw d;"

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
--
_____
DC G
Nov 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Jos
DC Gringo wrote:
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

--

Jos Branders
Nov 18 '05 #2

P: n/a
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 :)

"DC Gringo" <dc******@visiontechnology.net> wrote in message
news:OI**************@TK2MSFTNGP12.phx.gbl...
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=mypw d;"

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
--
_____
DC G

Nov 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.