2013-10-20 176 views
0

我有两个组合框状态和城市,当我在状态中选择值第一次时间值变化city combobx根据stateselection但第二次,如果我选择另一个州城市值不会根据更改状态值,为什么事件没有被第二次触发?我试图selectedIndexchanged event也不过同样的问题,与此也,或事件,我应该比使用,下面是我使用cmbState_SelectedValueChanged事件没有得到第二次触发

private void cmbState_SelectedValueChanged(object sender, EventArgs e) 
     { 
      string stateName = cmbState.SelectedItem.ToString(); 
      DataTable dt3 = DBHandling.GetcityDataTable(stateName); 
      if (dt3 != null && dt3.Rows.Count > 0) 
      { 
       foreach (DataRow dr in dt3.Rows) 
       { 
        cmbCity.Items.Add(dr["CityName"].ToString()); 
       } 
      } 
     } 
+0

你怎么知道它不是引发第二次?你尝试过调试吗? –

+0

请修改所提供的示例代码。根据它,只要你选择另一种状态,这种状态下的城市将增加** **到cmbCity。如果您在三个州中点击/选择,则cmbCity将包含所有三个州的城市。 (我这里假设你的代码是不是从另一个代码的bug运行受阻。) – elgonzo

+0

@KingKing是现在,我再次检查在调试不同的值,但对于国家'city'的一些价值正在发生变化,对一些价值它不是,我不理解的问题 – Durga

回答

0

它越来越触发代码..

您还没有结算清单,因此你无法看到您添加的新值

cmbCity.Items.Clear(); 
+0

是的,你是正确的,感谢发现错误 – Durga

1

您确定该活动第二次没有开火吗?看起来您可能需要清除城市组合框,然后在状态选择更改时向其添加城市。现在,你只是在列表中添加城市。当您更改状态选择第二时间,城市的名单依然存在,而你只是增加更多的城市名单。

试试这个:

private void cmbState_SelectedValueChanged(object sender, EventArgs e) 

    { 
     string stateName = cmbState.SelectedItem.ToString(); 
     DataTable dt3 = DBHandling.GetcityDataTable(stateName); 

     cmbCity.Items.Clear(); 

     if (dt3 != null && dt3.Rows.Count > 0) 
     { 
      foreach (DataRow dr in dt3.Rows) 
      { 
       cmbCity.Items.Add(dr["CityName"].ToString()); 
      } 
     } 
    } 
+0

能否请你解决方法签名的代码缩进。否则,你的答案是好的:) – elgonzo

+0

肯定。这里是。 – charlieparker

相关问题