Home All Groups Group Topic Archive Search About

Two DropDownList controls inside one DataGrid cell

Author
25 Apr 2006 11:22 AM
glenn
Hi folks,

I have two code test samples that I am trying out.  I want to have two
dropdownlist controls.  The first ddl is databound with a list of company
names.  The second ddl is databound with a list of contact names that reside
within the company that has been selected in the first ddl.

In the first sample, I have code where two dropdownlist controls are not in
a DataGrid.  In the second sample, I have two dropdownlist controls that are
inside a cell of a DataGrid control.

The first sample runs fine.  In the second sample, I am unclear what I need
to do.
Any reply would be much appreciated. 

Here is my code for the first sample.
<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    Dim dsCompanyNames as DataSet = New DataSet()
         Dim dsContacts as DataSet = New DataSet ()
         Dim coName As String
         Dim proj = "Big Barn"



              Sub Page_Load(sender As Object, e as EventArgs)
                if not Page.IsPostBack then
                     ddlCompanyName.DataSource = GetCompaniesForThisProject
( )
                     ddlCompanyName.DataBind ( )

                end if
              End Sub



              Function GetCompaniesForThisProject() As DataSet
                 dsCompanyNames.Clear()

                 Dim strConnString As String =
"Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data
Source=c:\sites\single29\gmeadows73\database\fdmdb.mdb"
                 Dim queryString As String = "SELECT DISTINCT
[users].[cname] FROM [users] WHERE ([users].[project] = '" & proj & "')"

                 Dim dataAdapter As New OleDbDataAdapter (querystring,
strConnString)
                 dataAdapter.Fill(dsCompanyNames, "users")

                 Return dsCompanyNames
              End Function



              Function GetContactNamesForThisCompanyAndProject() As DataSet
                 dsContacts.Clear()

                 Dim strConnString As String =
"Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data
Source=C:\sites\single29\gmeadows73\database\fdmdb.mdb"
                 Dim queryString = "SELECT [users].[name] FROM [users] WHERE
(([users].[cname] = '" & coName & "') AND ([users].[project] = '" & proj &
"'))"

                 Dim dataAdapter As New OleDbDataAdapter (querystring,
strConnString)
                 dataAdapter.Fill(dsContacts, "users")

                 Return dsContacts
              End Function



              Sub ddlCompanyName_SelectedIndexChanged(sender As Object, e As
EventArgs)
                 Dim list As DropDownList = CType(sender, DropDownList)
                 coName=list.SelectedItem.Text

                 ddlContactName.DataSource =
GetContactNamesForThisCompanyAndProject ( )
                 ddlContactName.DataBind ( )
              End Sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:DropDownList id="ddlCompanyName" runat="server" Width="204px"
AutoPostBack="True" DataValueField="cname"
OnSelectedIndexChanged="ddlCompanyName_SelectedIndexChanged"></asp:DropDownList>
        <asp:DropDownList id="ddlContactName" style="Z-INDEX: 100; LEFT:
13px; POSITION: absolute; TOP: 71px" runat="server" Width="202px"
DataValueField="name"></asp:DropDownList>
    </form>
</body>
</html>

Here is my code for the second sample.
<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    Dim dsCompanyNames as DataSet = New DataSet()
    Dim dsContacts as DataSet = New DataSet ()
    Dim coName As String
    Dim proj = "Big Barn"


         Function GetCompaniesForThisProject() As DataSet
            dsCompanyNames.Clear()

            Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;
Ole DB Services=-4; Data
Source=c:\sites\single29\gmeadows73\database\fdmdb.mdb"
            Dim queryString As String = "SELECT DISTINCT [users].[cname]
FROM [users] WHERE ([users].[project] = '" & proj & "')"

            Dim dataAdapter As New OleDbDataAdapter (querystring,
strConnString)
            dataAdapter.Fill(dsCompanyNames, "users")

            Return dsCompanyNames
         End Function


         Function GetContactNamesForThisCompanyAndProject() As DataSet
            dsContacts.Clear()

            Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;
Ole DB Services=-4; Data
Source=C:\sites\single29\gmeadows73\database\fdmdb.mdb"
            Dim queryString = "SELECT [users].[name] FROM [users] WHERE
(([users].[cname] = '" & coName & "') AND ([users].[project] = '" & proj &
"'))"

            Dim dataAdapter As New OleDbDataAdapter (querystring,
strConnString)
            dataAdapter.Fill(dsContacts, "users")

            Return dsContacts
         End Function


         Sub ddlCompanyName_SelectedIndexChanged(sender As Object, e As
EventArgs)
            Dim list As DropDownList = CType(sender, DropDownList)
            coName=list.SelectedItem.Text
            Dim ddlContactName as DropDownList
            ddlContactName.DataSource =
GetContactNamesForThisCompanyAndProject ( )
            ddlContactName.DataBind ( )
         End Sub

</script>
<html>
<head>
    <form runat="server">
        <asp:DataGrid id="DataGrid1" runat="server">
            <HeaderStyle backcolor="Navy" forecolor="White" font-size="9pt"
font-bold="True" horizontalalign="Center" />
            <PagerStyle backcolor="Navy" forecolor="White" font-size="9pt"
font-bold="True" horizontalalign="Right" nextpagetext="Next >"
prevpagetext="< Prev" />
            <Columns>
                <asp:EditCommandColumn EditText="Edit" UpdateText="Update"
CancelText="Cancel" ButtonType="LinkButton" />
                <asp:BoundColumn DataField="ID" HeaderText="Index<br>Number"
ReadOnly="True" />
                <asp:TemplateColumn HeaderText="To">
                    <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem, "cname") %>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:DropDownList id="ddlCompanyName" runat="server"
DataValueField="cname" AutoPostBack="True"
OnSelectedIndexChanged="ddlCompanyName_SelectedIndexChanged" />
                        <asp:DropDownList id="ddlContactName" runat="server"
DataValueField="name" />
                    </EditItemTemplate>
                </asp:TemplateColumn>
            </Columns>
        </asp:DataGrid>
    </form>
</head>
<body>
</body>
</html>

Author
25 Apr 2006 12:37 PM
glenn
Hi folks,

Solved my own problem.  For anyone interested in this, you need to have the
following snippet inside of your OnSelectedItem subroutine:

        Dim list As DropDownList = CType(sender, DropDownList)
        coName = list.SelectedItem.Text

        Dim cell As TableCell = CType(list.Parent, TableCell)
        Dim item As DataGridItem = CType(cell.Parent, DataGridItem)
        Dim ddlContact As DropDownList =
CType(item.FindControl("ddlContact"), DropDownList)
        ddlContact.DataSource = GetContactsFromCompanyForThisProject ()
        ddlContact.DataBind ( )



Show quote
"glenn" wrote:

> Hi folks,
>
> I have two code test samples that I am trying out.  I want to have two
> dropdownlist controls.  The first ddl is databound with a list of company
> names.  The second ddl is databound with a list of contact names that reside
> within the company that has been selected in the first ddl.
>
> In the first sample, I have code where two dropdownlist controls are not in
> a DataGrid.  In the second sample, I have two dropdownlist controls that are
> inside a cell of a DataGrid control.
>
> The first sample runs fine.  In the second sample, I am unclear what I need
> to do.
> Any reply would be much appreciated. 
>
> Here is my code for the first sample.
> <%@ Page Language="VB" %>
> <%@ import Namespace="System.Data" %>
> <%@ import Namespace="System.Data.OleDb" %>
> <script runat="server">
>
>     Dim dsCompanyNames as DataSet = New DataSet()
>          Dim dsContacts as DataSet = New DataSet ()
>          Dim coName As String
>          Dim proj = "Big Barn"
>    
>    
>    
>               Sub Page_Load(sender As Object, e as EventArgs)
>                 if not Page.IsPostBack then
>                      ddlCompanyName.DataSource = GetCompaniesForThisProject
> ( )
>                      ddlCompanyName.DataBind ( )
>    
>                 end if
>               End Sub
>    
>    
>    
>               Function GetCompaniesForThisProject() As DataSet
>                  dsCompanyNames.Clear()
>    
>                  Dim strConnString As String =
> "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data
> Source=c:\sites\single29\gmeadows73\database\fdmdb.mdb"
>                  Dim queryString As String = "SELECT DISTINCT
> [users].[cname] FROM [users] WHERE ([users].[project] = '" & proj & "')"
>    
>                  Dim dataAdapter As New OleDbDataAdapter (querystring,
> strConnString)
>                  dataAdapter.Fill(dsCompanyNames, "users")
>    
>                  Return dsCompanyNames
>               End Function
>    
>    
>    
>               Function GetContactNamesForThisCompanyAndProject() As DataSet
>                  dsContacts.Clear()
>    
>                  Dim strConnString As String =
> "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data
> Source=C:\sites\single29\gmeadows73\database\fdmdb.mdb"
>                  Dim queryString = "SELECT [users].[name] FROM [users] WHERE
> (([users].[cname] = '" & coName & "') AND ([users].[project] = '" & proj &
> "'))"
>    
>                  Dim dataAdapter As New OleDbDataAdapter (querystring,
> strConnString)
>                  dataAdapter.Fill(dsContacts, "users")
>    
>                  Return dsContacts
>               End Function
>    
>    
>    
>               Sub ddlCompanyName_SelectedIndexChanged(sender As Object, e As
> EventArgs)
>                  Dim list As DropDownList = CType(sender, DropDownList)
>                  coName=list.SelectedItem.Text
>    
>                  ddlContactName.DataSource =
> GetContactNamesForThisCompanyAndProject ( )
>                  ddlContactName.DataBind ( )
>               End Sub
>
> </script>
> <html>
> <head>
> </head>
> <body>
>     <form runat="server">
>         <asp:DropDownList id="ddlCompanyName" runat="server" Width="204px"
> AutoPostBack="True" DataValueField="cname"
> OnSelectedIndexChanged="ddlCompanyName_SelectedIndexChanged"></asp:DropDownList>
>         <asp:DropDownList id="ddlContactName" style="Z-INDEX: 100; LEFT:
> 13px; POSITION: absolute; TOP: 71px" runat="server" Width="202px"
> DataValueField="name"></asp:DropDownList>
>     </form>
> </body>
> </html>
>
> Here is my code for the second sample.
> <%@ Page Language="VB" %>
> <%@ import Namespace="System.Data" %>
> <%@ import Namespace="System.Data.OleDb" %>
> <script runat="server">
>
>     Dim dsCompanyNames as DataSet = New DataSet()
>     Dim dsContacts as DataSet = New DataSet ()
>     Dim coName As String
>     Dim proj = "Big Barn"
>    
>    
>          Function GetCompaniesForThisProject() As DataSet
>             dsCompanyNames.Clear()
>    
>             Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;
> Ole DB Services=-4; Data
> Source=c:\sites\single29\gmeadows73\database\fdmdb.mdb"
>             Dim queryString As String = "SELECT DISTINCT [users].[cname]
> FROM [users] WHERE ([users].[project] = '" & proj & "')"
>    
>             Dim dataAdapter As New OleDbDataAdapter (querystring,
> strConnString)
>             dataAdapter.Fill(dsCompanyNames, "users")
>    
>             Return dsCompanyNames
>          End Function
>    
>    
>          Function GetContactNamesForThisCompanyAndProject() As DataSet
>             dsContacts.Clear()
>    
>             Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;
> Ole DB Services=-4; Data
> Source=C:\sites\single29\gmeadows73\database\fdmdb.mdb"
>             Dim queryString = "SELECT [users].[name] FROM [users] WHERE
> (([users].[cname] = '" & coName & "') AND ([users].[project] = '" & proj &
> "'))"
>    
>             Dim dataAdapter As New OleDbDataAdapter (querystring,
> strConnString)
>             dataAdapter.Fill(dsContacts, "users")
>    
>             Return dsContacts
>          End Function
>    
>    
>          Sub ddlCompanyName_SelectedIndexChanged(sender As Object, e As
> EventArgs)
>             Dim list As DropDownList = CType(sender, DropDownList)
>             coName=list.SelectedItem.Text
>             Dim ddlContactName as DropDownList
>             ddlContactName.DataSource =
> GetContactNamesForThisCompanyAndProject ( )
>             ddlContactName.DataBind ( )
>          End Sub
>
> </script>
> <html>
> <head>
>     <form runat="server">
>         <asp:DataGrid id="DataGrid1" runat="server">
>             <HeaderStyle backcolor="Navy" forecolor="White" font-size="9pt"
> font-bold="True" horizontalalign="Center" />
>             <PagerStyle backcolor="Navy" forecolor="White" font-size="9pt"
> font-bold="True" horizontalalign="Right" nextpagetext="Next >"
> prevpagetext="< Prev" />
>             <Columns>
>                 <asp:EditCommandColumn EditText="Edit" UpdateText="Update"
> CancelText="Cancel" ButtonType="LinkButton" />
>                 <asp:BoundColumn DataField="ID" HeaderText="Index<br>Number"
> ReadOnly="True" />
>                 <asp:TemplateColumn HeaderText="To">
>                     <ItemTemplate>
>                         <%# DataBinder.Eval(Container.DataItem, "cname") %>
>                     </ItemTemplate>
>                     <EditItemTemplate>
>                         <asp:DropDownList id="ddlCompanyName" runat="server"
> DataValueField="cname" AutoPostBack="True"
> OnSelectedIndexChanged="ddlCompanyName_SelectedIndexChanged" />
>                         <asp:DropDownList id="ddlContactName" runat="server"
> DataValueField="name" />
>                     </EditItemTemplate>
>                 </asp:TemplateColumn>
>             </Columns>
>         </asp:DataGrid>
>     </form>
> </head>
> <body>
> </body>
> </html>
>

AddThis Social Bookmark Button