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.
>-----Original Message-----
>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........
>
>>-----Original Message-----
>>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").Select ed = 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.
>>>-----Original Message-----
>>>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.Data Item
>>>("Username")))
>>> lstEMTsDriverTemp = e.Item.FindControl
>>>("lstEMTDriver")
>>> lstEMTsDriverTemp.SelectedIndex =
>>>lstEMTsDriverTemp.Items.IndexOf
>>>(lstEMTsDriverTemp.Items.FindByValue(e.Item.Dat aItem
>>>("Username")))
>>> lstRiderTemp = e.Item.FindControl
>("lstRider")
>>> lstRiderTemp.SelectedIndex =
>>>lstRiderTemp.Items.IndexOf
>(lstRiderTemp.Items.FindByValue
>>>(e.Item.DataItem("Username")))
>>> End If
>>>
>>> End Sub
>>>
>>>Thanks,
>>>
>>>Bill.
>>>.
>>>
>>.
>>
>.
>
|