listboxes.........

B

bill yeager

I have several template columns inside of a datagrid.
Inside of these template columns are databound listboxes:

<asp:TemplateColumn HeaderText="Crew Chiefs">

<ItemTemplate>

<asp:listbox AutoPostBack="False"
BackColor="#ffffff" id="lstCrewChief" runat="server"
Rows="1" DataSource="<%# DsCrewChief1 %>" Enabled="True"
SelectionMode="Single" DataTextField="UserName"
DataValueField="UserName" />

</asp:listbox>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="EMT's/Drivers">

<ItemTemplate>

<asp:listbox AutoPostBack="False"
BackColor="#ffffff" id="lstEMTDriver" runat="server"
Rows="1" DataSource="<%# DsEMTDriver1 %>" Enabled="True"
SelectionMode="Single" DataTextField="UserName"
DataValueField="UserName" />

</asp:listbox>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="Riders">

<ItemTemplate>

<asp:listbox AutoPostBack="False"
BackColor="#ffffff" id="lstRider" runat="server" Rows="1"
DataSource="<%# DsRider1 %>" Enabled="True"
SelectionMode="Multiple" DataTextField="UserName"
DataValueField="UserName" />

</asp:listbox>

</ItemTemplate>

</asp:TemplateColumn>




I would like to do 2 things with these listboxes: One, is
to set the selected value in the listbox to the values I
retrieve in the database. The second, is to set the
selected values in the listboxes to values before I write
the data to the database.

I'm confused about the ITEMDatabound event of the
datagrid. Is this event used to get the values of the
listboxes BEFORE I write the data to the database (which I
think it is)? If so, is there an event I need to use to
SET the values in the listboxes to the values I retrieved
from the database? If there is no event, how do I go about
setting the values of the listboxes?

Also, how do I set and retrieve values from a listbox that
can have multiple selections...

Below is the code I have for the ItemDataBound
event...........


Private Sub DataGrid1_ItemDataBound(ByVal sender As
Object, ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs) Handles
DataGrid1.ItemDataBound

'Get the correct values for the listboxes
If e.Item.ItemType = ListItemType.Item Then
Dim lstCrewChiefTemp As ListBox
Dim lstEMTsDriverTemp As ListBox
Dim lstRiderTemp As ListBox
lstCrewChiefTemp = e.Item.FindControl
("lstCrewChief")
lstCrewChiefTemp.SelectedIndex =
lstCrewChiefTemp.Items.IndexOf
(lstCrewChiefTemp.Items.FindByValue(e.Item.DataItem
("Username")))
lstEMTsDriverTemp = e.Item.FindControl
("lstEMTDriver")
lstEMTsDriverTemp.SelectedIndex =
lstEMTsDriverTemp.Items.IndexOf
(lstEMTsDriverTemp.Items.FindByValue(e.Item.DataItem
("Username")))
lstRiderTemp = e.Item.FindControl("lstRider")
lstRiderTemp.SelectedIndex =
lstRiderTemp.Items.IndexOf(lstRiderTemp.Items.FindByValue
(e.Item.DataItem("Username")))
End If

End Sub

Thanks,

Bill.
 
P

Prakash Ramdas

Answer to Qn1.

ItemDataBound is the method that is called just after the
Data binding is over. This is the place where you add your
code to choose what is selected in the list box.

You can do it this way.

Put this code in ItemDataBound with your regular check for
ItemTypes.

Dim lstCrewChiefTemp As ListBox
lstCrewChiefTemp.Items.FindByValue("123").Selected = True

Answer for Qn2.

You can access the multiple items selected in ListBox as
follows.

dim item as ListItem
For Each item in List1.Items
if item.Selected = True Then
'code to process the selected items.
End if

Next

I guess this is what you are looking for. If NOT please
reply back.

With Regards
Prakash R.
 
B

bill yeager

Prakash, is there an event I can use to set the values of
the respective listboxes once I get to the page.

At first, I load the listboxes (if not already in cache),
then, I want to set the selected values in the listboxes
to what they are in the database (via another query from
a previous user update that the user had selected prior).

If there is no event I can use, I was planning on looping
thru the columns in the datagrid and setting the values
of the listboxes that way........
 
P

Prakash

Bill,

I would still use ItemDataBound to set the listbox
selection.

Here is an example of how I acheived in my own problem.
The datagrid is databound. I have a column with the value
of the listbox to be set with the selection. So, to set
the listbox I pick the value from the other column, which
is bound just before this event. In case where no
selection is available for the row, a default string is
inserted and selected in the listbox.

If ViewState("InsertMode") = True Then
CType(e.Item.Cells(6).FindControl("CompanyName"),
DropDownList).Items.Insert(0, New ListItem("Select one", -
99))
Else
ID = CType(e.Item.Cells(5).FindControl("CompanyID"),
LiteralControl).Text
CType(e.Item.Cells(6).FindControl("CompanyName"),
DropDownList).Items.FindByValue(ID).Selected = True
End If

Hope this helps.
Prakash R.
 

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,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top