Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ComboBoxProvince.DropDownStyle = ComboBoxStyle.DropDownList
Me.ComboBoxCity.DropDownStyle = ComboBoxStyle.DropDownList
Me.ComboBoxTown.DropDownStyle = ComboBoxStyle.DropDownList
With Me.ComboBoxProvince
.DataSource = gRegion.ProvinceTable
.DisplayMember = "Name"
.ValueMember = "ID"
End With
End Sub
Private Sub ComboBoxProvince_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles comboboxprovince.SelectedValueChanged
If Me.ComboBoxProvince.SelectedValue Is Nothing Then Return
With Me.ComboBoxCity
.DataSource = gRegion.GetCities(Me.ComboBoxProvince.SelectedValue.ToString)
.DisplayMember = "Name"
.ValueMember = "ID"
End With
End Sub
Private Sub ComboBoxCity_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles ComboBoxCity.SelectedValueChanged
If Me.ComboBoxCity.SelectedValue Is Nothing Then Return
With Me.ComboBoxTown
.DataSource = gRegion.GetTowns(Me.ComboBoxCity.SelectedValue.ToString)
.DisplayMember = "Name"
.ValueMember = "ID"
End With
End Sub
End Class
Public Class Region
Private gProvinceTable As DataTable
Private gCityTable As DataTable
Private gTownTable As DataTable
Sub New()
gProvinceTable = New DataTable("Provice")
With gProvinceTable
.Columns.Add("ID")
.Columns.Add("Name")
.PrimaryKey = New DataColumn() {.Columns("ID")}
End With
gCityTable = New DataTable("City")
With gCityTable
.Columns.Add("ID")
.Columns.Add("Name")
.Columns.Add("ProvinceID")
.PrimaryKey = New DataColumn() {.Columns("ID")}
End With
gTownTable = New DataTable("Town")
With gTownTable
.Columns.Add("ID")
.Columns.Add("Name")
.Columns.Add("CityID")
.PrimaryKey = New DataColumn() {.Columns("ID")}
End With
With gProvinceTable.Rows
.Add(New Object() {"01", "河北省"})
.Add(New Object() {"02", "山西省"})
End With
With gCityTable.Rows
.Add(New Object() {"001", "石家庄市", "01"})
.Add(New Object() {"002", "唐山市", "01"})
.Add(New Object() {"003", "太原市", "02"})
.Add(New Object() {"004", "大同市", "02"})
End With
gProvinceTable.AcceptChanges()
gCityTable.AcceptChanges()
gTownTable.AcceptChanges()
End Sub
Public ReadOnly Property ProvinceTable() As DataTable
Get
Return gProvinceTable
End Get
End Property
Public ReadOnly Property CityTable() As DataTable
Get
Return gCityTable
End Get
End Property
Public ReadOnly Property TownTable() As DataTable
Get
Return gTownTable
End Get
End Property
Public Function GetCities(ByVal provinceID As String) As DataView
Return New DataView(Me.CityTable, String.Format("ProvinceID = '{0}'", provinceID), "ID", DataViewRowState.CurrentRows)
End Function
Public Function GetTowns(ByVal CityID As String) As DataView
Return New DataView(Me.TownTable, String.Format("CityID = '{0}'", CityID), "ID", DataViewRowState.CurrentRows)
End Function