Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > listboxes.........

Reply
Thread Tools

listboxes.........

 
 
bill yeager
Guest
Posts: n/a
 
      08-08-2003
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.DataIte m
("Username")))
lstEMTsDriverTemp = e.Item.FindControl
("lstEMTDriver")
lstEMTsDriverTemp.SelectedIndex =
lstEMTsDriverTemp.Items.IndexOf
(lstEMTsDriverTemp.Items.FindByValue(e.Item.DataIt em
("Username")))
lstRiderTemp = e.Item.FindControl("lstRider")
lstRiderTemp.SelectedIndex =
lstRiderTemp.Items.IndexOf(lstRiderTemp.Items.Find ByValue
(e.Item.DataItem("Username")))
End If

End Sub

Thanks,

Bill.
 
Reply With Quote
 
 
 
 
Prakash Ramdas
Guest
Posts: n/a
 
      08-08-2003
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.
>-----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.DataIt em
>("Username")))
> lstEMTsDriverTemp = e.Item.FindControl
>("lstEMTDriver")
> lstEMTsDriverTemp.SelectedIndex =
>lstEMTsDriverTemp.Items.IndexOf
>(lstEMTsDriverTemp.Items.FindByValue(e.Item.DataI tem
>("Username")))
> lstRiderTemp = e.Item.FindControl("lstRider")
> lstRiderTemp.SelectedIndex =
>lstRiderTemp.Items.IndexOf(lstRiderTemp.Items.Fin dByValue
>(e.Item.DataItem("Username")))
> End If
>
> End Sub
>
>Thanks,
>
>Bill.
>.
>

 
Reply With Quote
 
 
 
 
bill yeager
Guest
Posts: n/a
 
      08-09-2003
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").Selecte d = 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.DataGridItemEventArg s)

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.DataI tem
>>("Username")))
>> lstEMTsDriverTemp = e.Item.FindControl
>>("lstEMTDriver")
>> lstEMTsDriverTemp.SelectedIndex =
>>lstEMTsDriverTemp.Items.IndexOf
>>(lstEMTsDriverTemp.Items.FindByValue(e.Item.Data Item
>>("Username")))
>> lstRiderTemp = e.Item.FindControl

("lstRider")
>> lstRiderTemp.SelectedIndex =
>>lstRiderTemp.Items.IndexOf

(lstRiderTemp.Items.FindByValue
>>(e.Item.DataItem("Username")))
>> End If
>>
>> End Sub
>>
>>Thanks,
>>
>>Bill.
>>.
>>

>.
>

 
Reply With Quote
 
Prakash
Guest
Posts: n/a
 
      08-11-2003
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.
>>>.
>>>

>>.
>>

>.
>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off




Advertisments