我有两个组合框,一个是CountryCombo,第二个是StateCombo。
我想要的是当我点击国家/地区组合并选择一个国家/地区时,该国家/地区应该在州组合中填充。
我尝试了很多很多东西,但没有任何效果。以下是我的CountryCombo如何填补的代码。
query="select CountryName from CountryMaster"
if dr.hasRows()
{
while dr.read()
{
countrycombo.items.add(dr(0)
}
}
答案 0 :(得分:2)
试试这段代码:
Dim dt As New DataTable
Dim cm1, cm2 As New DataColumn
cm1.ColumnName = "CountryName"
cm1.DataType = GetType(String)
cm2.ColumnName = "CountryID"
cm2.DataType = GetType(String) 'or integer
dt.Columns.Add(cm1)
dt.Columns.Add(cm2)
'contry = here select your data
Dim dr As DataRow
dr = dt.NewRow
dr(0) = "Select One"
dr(1) = "-1"
dt.Rows.Add(dr)
For Each item In contry
dr = dt.NewRow
dr(0) = item.CountryName
dr(1) = item.CountryID
dt.Rows.Add(dr)
Next
Drp.DataSource = dt
Drp.DataTextField = "CountryName"
Drp.DataValueField = "CountryID"
Drp.DataBind()
使用此代码,您可以填写下拉列表。您可以像这样编写sub并将其放在此下拉列表的选定更改上。玩得开心!
添加此部分,并确保如果其网络表单在后续列表中回发。
Protected Sub Drpcountry_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Drpcountry.SelectedIndexChanged
Dim db as new linqdatacontext
Dim dt As New DataTable
Dim cm1, cm2 As New DataColumn
cm1.ColumnName = "stateName"
cm1.DataType = GetType(String)
cm2.ColumnName = "stateID"
cm2.DataType = GetType(String) 'or integer
dt.Columns.Add(cm1)
dt.Columns.Add(cm2)
Dim stateslist = From i in db.tb_states where i.countryid = drpcountry.selectedvalue select i
Dim dr As DataRow
dr = dt.NewRow
dr(0) = "Select One"
dr(1) = "-1"
dt.Rows.Add(dr)
For Each item In stateslist
dr = dt.NewRow
dr(0) = item.stateName
dr(1) = item.stateID
dt.Rows.Add(dr)
Next
Drpstate.DataSource = dt
Drpstate.DataTextField = "stateName"
Drpstate.DataValueField = "stateID"
Drpstate.DataBind()
End Sub
答案 1 :(得分:2)
请检查以下代码,并在发布问题之前做一些功课。
Private Sub countryCombo_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
Dim query As String
query = "select StateName from StateMaster where CountryId='" & countryCombo.SelectedValue & "'"
if dr.hasRows()
{
while dr.read()
{
Statecombo.items.add(dr(0))
}
}
End Sub
这将填写您的Statecombo关于countryCombo的选择更改。
答案 2 :(得分:0)
您显示的代码是填充CountryCombo的(不完整)代码:请分享填写StateCombo新代码的代码,因为这部分会导致您出现问题。
无论如何你应该避免直接操纵ComBoBox项,而是你应该将两个Combo绑定到ObservableCollection,比如
Public Property CountryCollection as New ObservableCollection(Of Country)
和
Public Property StateCollection As New ObservableCollection(Of State).
对于Country和State对象,重载ToString()sub以显示国家/州名称 在Combos中。
现在用您的国家填充CountryCollection,并在CountryCombo的SelectionChanged上检索状态列表(=具有CountryCombo.SelectedItem.CountryID作为CountryID的状态),然后用此查询结果填充StateCollection(Clear()然后添加())。
逐步测试:使用BreakPoints / Debugger检查您的国家/地区查询是否返回了良好的结果。如果绑定到ObservableCollection,则查询现在应该是唯一的问题。