根据母版页中选定的下拉列表创建下拉列表

Create dropdownlist based on selected dropdownlist from master page

我有母版页和内容页。在母版页中,我有从数据库中获取城市的城市 DropDownList。在我的内容页面中,我的区域下拉列表也来自数据库。现在假设如果我的城市发生变化,那么与该特定选定城市相关的愿望区域也应该发生变化。我已经正确管理了我的数据库表并传递了正确的查询。但是,如果城市 DropDownList 发生更改,则 DropDownList Of areas 不会刷新。按照我正在尝试的代码。

母版

Private Sub MasterPage_Load(sender As Object, e As EventArgs) Handles Me.Load
        Me.PopulateCities()
        If Not IsPostBack Then
            If Session("masterLocation") Is Nothing Then
                Session("cityName") = "Pune"
            Else
                locationSelector.Text = Session("masterLocation").ToString()
            End If
        End If
        locationPopupActivator.Text = locationSelector.SelectedValue.ToString
    End Sub

Private Sub PopulateCities()
        Using conn As New MySqlConnection()
            conn.ConnectionString = ConfigurationManager _
                .ConnectionStrings("conio").ConnectionString()
            Using cmd As New MySqlCommand()
                cmd.CommandText = "Select cityName from cities where status = 'active' order by cityName"
                cmd.Connection = conn
                conn.Open()
                Using sdr As MySqlDataReader = cmd.ExecuteReader()
                    While sdr.Read()
                        Dim item As New ListItem()
                        item.Text = sdr("cityName").ToString()
                        item.Value = sdr("cityName").ToString()
                        'item.Selected = Convert.ToBoolean(sdr("IsSelected"))
                        locationSelector.Items.Add(item)
                    End While
                End Using
                conn.Close()
            End Using
        End Using
    End Sub

内容页

Private Sub hospitals_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
If Not IsPostBack Then
      Me.PopulateAreas()
End If
End Sub

Private Sub PopulateAreas()
        areasList.Items.Clear()
        Dim citySelector As RadioButtonList = Page.Master.FindControl("locationSelector")
        Using conn As New MySqlConnection()
            conn.ConnectionString = ConfigurationManager _
                .ConnectionStrings("conio").ConnectionString()
            Using cmd As New MySqlCommand()
                cmd.CommandText = "Select * from areas where areaCity like '" + citySelector.SelectedItem.ToString + "%'"
                cmd.Connection = conn
                conn.Open()
                Using sdr As MySqlDataReader = cmd.ExecuteReader()
                    While sdr.Read()
                        Dim item As New ListItem()
                        item.Text = sdr("areaName").ToString()
                        item.Value = sdr("areaName").ToString()
                        'item.Selected = Convert.ToBoolean(sdr("IsSelected"))
                        areasList.Items.Add(item)
                    End While
                End Using
                conn.Close()
            End Using
        End Using
        areasList.Items.Insert(0, New ListItem("All Area", "All"))
    End Sub

您的代码中的一切都很好,只需在您的内容页面 Pre_Render 事件上进行更改

If IsPostBack Then
    Me.PopulateAreas()
End If

进行此更改。希望这能解决您的问题。