listboxes.........

Discussion in 'ASP .Net' started by bill yeager, Aug 8, 2003.

  1. bill yeager

    bill yeager Guest

    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.
     
    bill yeager, Aug 8, 2003
    #1
    1. Advertising

  2. 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.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.
    >.
    >
     
    Prakash Ramdas, Aug 8, 2003
    #2
    1. Advertising

  3. bill yeager

    bill yeager Guest

    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").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.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.
    >>.
    >>

    >.
    >
     
    bill yeager, Aug 9, 2003
    #3
  4. bill yeager

    Prakash Guest

    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").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.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.
    >>>.
    >>>

    >>.
    >>

    >.
    >
     
    Prakash, Aug 11, 2003
    #4
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    1
    Views:
    292
  2. Big E

    ASP.Net Listboxes

    Big E, Jun 14, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    348
    John Saunders
    Jun 15, 2004
  3. Terry D

    Listboxes don't always show

    Terry D, Jun 15, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    312
    Terry D
    Jun 15, 2004
  4. Big E

    Listboxes

    Big E, Jul 19, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    453
    Mike Smith
    Jul 20, 2004
  5. Ryan Ternier
    Replies:
    1
    Views:
    552
    John Saunders
    Jul 25, 2004
Loading...

Share This Page