|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Two DropDownList controls inside one DataGrid cellI 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> 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> > |
|||||||||||||||||||||||