Answered by:
Cascading Dropdownlist not retreiving values

Question
-
User-1352156089 posted
Hi All,
I cannot understand what's wrong with the below code but the dropdownlists are not populated as expected.
<asp:DropDownList ID="ddlcontinents" runat="server" CssClass="ddlcontent"></asp:DropDownList> <cc1:CascadingDropDown ID="ccdddlcontinents" runat="server" TargetControlID="ddlcontinents" PromptText="Select Continents" PromptValue="" ServicePath="ccdregioncountry.asmx" ServiceMethod="GetContinents" Category="Continent" /> <asp:DropDownList ID="ddlcountries" runat="server" CssClass="ddlcontent"> </asp:DropDownList> <cc1:CascadingDropDown ID="ccdddlcountries" runat="server" TargetControlID="ddlcountries" PromptText="Select Country" PromptValue="" ServicePath="ccdregioncountry.asmx" ServiceMethod="GetCountries" Category="Country"/>
I created a webmethod as follows:
Imports System.Web Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Data Imports System.Data.SqlClient Imports System.Configuration Imports AjaxControlToolkit Imports System.Collections.Generic <WebService([Namespace]:="http://tempuri.org/")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ <System.Web.Script.Services.ScriptService()> _ Public Class ccdregioncountry Inherits System.Web.Services.WebService Private conString As String = System.Configuration.ConfigurationManager.ConnectionStrings("DefaultConnection").ToString() <WebMethod> _ Public Function GetContinents(knownContinentValues As String, Continent As String) As CascadingDropDownNameValue() Dim sqlConn As New SqlConnection(conString) sqlConn.Open() Dim sqlSelect As New SqlCommand("SELECT ContinentName, ContinentId FROM Continents", sqlConn) sqlSelect.CommandType = System.Data.CommandType.Text Dim sqlAdapter As New SqlDataAdapter(sqlSelect) Dim myDataset As New DataSet() sqlAdapter.Fill(myDataset) sqlConn.Close() Dim cascadingValues As New List(Of CascadingDropDownNameValue)() For Each dRow As DataRow In myDataset.Tables(0).Rows Dim ContinentId As String = dRow("ContinentId").ToString() Dim ContinentName As String = dRow("ContinentName").ToString() cascadingValues.Add(New CascadingDropDownNameValue(ContinentName, ContinentId)) Next Return cascadingValues.ToArray() End Function <WebMethod> _ Public Function GetCountries(knownContinentValues As String, Continent As String) As CascadingDropDownNameValue() Dim ContinentId As Integer Dim continentValues As StringDictionary = CascadingDropDown.ParseKnownCategoryValuesString(knownContinentValues) ContinentId = Convert.ToInt32(continentValues("Continent")) Dim sqlConn As New SqlConnection(conString) sqlConn.Open() Dim sqlSelect As New SqlCommand("SELECT CountryName, CountryId FROM Countries WHERE ContinentId=@ContinentId", sqlConn) sqlSelect.CommandType = System.Data.CommandType.Text sqlSelect.Parameters.Add("@ContinentId", SqlDbType.Int).Value = ContinentId Dim sqlAdapter As New SqlDataAdapter(sqlSelect) Dim myDataset As New DataSet() sqlAdapter.Fill(myDataset) sqlConn.Close() Dim cascadingValues As New List(Of CascadingDropDownNameValue)() For Each dRow As DataRow In myDataset.Tables(0).Rows Dim CountryId As String = dRow("CountryId").ToString() Dim CountryName As String = dRow("CountryName").ToString() cascadingValues.Add(New CascadingDropDownNameValue(CountryName, CountryId)) Next Return cascadingValues.ToArray() End Function End Class
Thank you in advance for helping me out in double checking where is the error here.
Friday, May 22, 2015 9:07 AM
Answers
-
User1996603829 posted
Hi claudio,
Thanks for your post.
According to your description, you could try to fix the problem as follows:
Firstly: please add <asp:ScriptManager> tag to your page:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
Secondly: please add "ParentControlID" attribute to CascadingDropDown whose ID is 'ccdddlcountries':
<cc1:CascadingDropDown ID="ccdddlcountries" runat="server" ParentControlID="ddlcontinents" TargetControlID="ddlcountries" PromptText="Select Country" PromptValue="" ServicePath="ccdregioncountry.asmx" ServiceMethod="GetCountries" Category="Country" />
Thirdly: please modify the webmethod as follows, please be noticed about the parameter:
<WebMethod()> _ Public Function ObtenerEstadoLista(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue() Dim con As SqlConnection = New SqlConnection(strConnection) Dim cmd As SqlCommand = New SqlCommand cmd.Connection = con cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "select * from dbo.xdom_Estado" Dim dAdapter As SqlDataAdapter = New SqlDataAdapter dAdapter.SelectCommand = cmd con.Open Dim objDs As DataSet = New DataSet dAdapter.Fill(objDs) con.Close Dim countryNames As List(Of CascadingDropDownNameValue) = New List(Of CascadingDropDownNameValue) For Each dRow As DataRow In objDs.Tables(0).Rows Dim countryID As String = dRow("NumeroEstado").ToString Dim countryName As String = dRow("DescripEstado").ToString countryNames.Add(New CascadingDropDownNameValue(countryName, countryID)) Next Return countryNames.ToArray End Function <WebMethod()> _ Public Function ObtenerMunicipioLista(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue() Dim countryID As Integer Dim countryValues As StringDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues) countryID = Convert.ToInt32(countryValues("Estado")) Dim con As SqlConnection = New SqlConnection(strConnection) Dim cmd As SqlCommand = New SqlCommand cmd.Connection = con cmd.CommandType = System.Data.CommandType.Text cmd.Parameters.AddWithValue("@EstadoID", countryID) cmd.CommandText = "select * from dbo.xdom_Municipio where ID_Estado=@EstadoID " Dim dAdapter As SqlDataAdapter = New SqlDataAdapter dAdapter.SelectCommand = cmd con.Open Dim objDs As DataSet = New DataSet dAdapter.Fill(objDs) con.Close Dim cityNames As List(Of CascadingDropDownNameValue) = New List(Of CascadingDropDownNameValue) For Each dRow As DataRow In objDs.Tables(0).Rows Dim cityID As String = dRow("NumeroMunicipio").ToString Dim cityName As String = dRow("DescripMunicipio").ToString cityNames.Add(New CascadingDropDownNameValue(cityName, cityID)) Next Return cityNames.ToArray End Function <WebMethod()> _ Public Function ObtenerCiudadLista(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue() Dim countryID As Integer Dim countryValues As StringDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues) countryID = Convert.ToInt32(countryValues("Municipio")) Dim con As SqlConnection = New SqlConnection(strConnection) Dim cmd As SqlCommand = New SqlCommand cmd.Connection = con cmd.CommandType = System.Data.CommandType.Text cmd.Parameters.AddWithValue("@MunicipioID", countryID) cmd.CommandText = "select * from dbo.xdom_Ciudad where ID_Municipio=@MunicipioID" Dim dAdapter As SqlDataAdapter = New SqlDataAdapter dAdapter.SelectCommand = cmd con.Open Dim objDs As DataSet = New DataSet dAdapter.Fill(objDs) con.Close Dim cityNamestest As List(Of CascadingDropDownNameValue) = New List(Of CascadingDropDownNameValue) For Each dRow As DataRow In objDs.Tables(0).Rows Dim cityID As String = dRow("NumeroCiudad").ToString Dim cityName As String = dRow("DescripCiudad").ToString cityNamestest.Add(New CascadingDropDownNameValue(cityName, cityID)) Next Return cityNamestest.ToArray End Function
For more information, please try to refer to the following article :
http://www.aspdotnet-suresh.com/2011/01/introduction-here-i-will-explain-how-to.html .Best Regards,
Collina- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Wednesday, May 27, 2015 4:08 AM