locked
Cascading Dropdownlist not retreiving values RRS feed

  • 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