8,757
社区成员
发帖
与我相关
我的任务
分享
,不解啊。请问怎么清除啊?或者说怎么解决我这个问题啊?求大神!
private void Window_Loaded(object sender, RoutedEventArgs e) {
DataTable dataTable = SQLHelper.ExecuteDataSet("select * from Province");
string[] colNames = { "proId", "proName" }; //声明string数组,并初始化。不指定长度
//遍历结果集
cobProvince.ItemsSource = returnArea(dataTable, colNames); //把集合中的对象赋给Combobox的ItemSource集合中
//cobProvince.SelectedIndex = 0;
//加载完后显示第一项。还是不要显示,因为在显示时会触发下面的SelectionChanged事件,然后查询数据库,这样增加了数据库的负担
}
/// <summary>
/// 省份加载后触发该事件,并加载该省份下的城市
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cobProvince_SelectionChanged(object sender, SelectionChangedEventArgs e) {
Area areaProvince = (Area)cobProvince.SelectedItem; //表示被选中的对象
int proId = areaProvince.AreaId; //省份的Id
string strSql = "select * from City where proId = @proId;";
//返回结果集
DataTable dataTable = SQLHelper.ExecuteDataSet(strSql, new SqlParameter("@proId", proId));
string[] colNames = new string[3] { "cityId", "cityName", "proId" }; //声明string数组,并初始化。长度为3
//调用函数,遍历结果集
cobCity.ItemsSource = returnArea(dataTable, colNames);
}
/// <summary>
/// 城市加载完后触发该事件,并加载该城市下的县
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cobCity_SelectionChanged(object sender, SelectionChangedEventArgs e) {
//cobCity.Items.Clear(); 此句会报错
Area areaCounty = (Area)cobCity.SelectedItem; //被选中的城市对象
int proId = areaCounty.AreaProId; //被选中对象的proId
string strSql = "select * from City where proId = @proId"; //根据proId得到结果
DataTable dataTable = SQLHelper.ExecuteDataSet(strSql, new SqlParameter("@proId", proId));
string[] colNames = { "cityId", "cityName", "proId" };
cobCounty.ItemsSource = returnArea(dataTable, colNames); //调用函数返回Area对象集
//cobCity.SelectedIndex = 0; //显示市的第一项,避免下面没有选中项
}
/// <summary>
/// 遍历结果集
/// </summary>
/// <param name="dataTable">结果集</param>
/// <param name="colNames">数据库列名</param>
/// <returns>返回Area对的集合</returns>
private List<Area> returnArea(DataTable dataTable, string[] colNames) {
List<Area> listArea = new List<Area>(); //Area集合对象
//遍历结果集的每一条
foreach (DataRow dataRow in dataTable.Rows) {
Area area = new Area();
area.AreaId = (int)dataRow[colNames[0]]; //返回的是DataRow类型,但proId是int类型
area.AreaName = (string)dataRow[colNames[1]];
if (colNames.Length > 2) {
area.AreaProId = (int)dataRow[colNames[2]]; //第三个数据库字段
}
listArea.Add(area); //把对象添加到集合中
}
return listArea;
}
cobCounty.ItemsSource = null,不知道这样做好不好。也相当于清空了哈?
/// <summary>
/// 城市加载完后触发该事件,并加载该城市下的县
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cobCity_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Area areaCounty = cobCity.SelectedItem as Area; //被选中的城市对象
if (areaCounty==null)
{
return;
}
int proId = areaCounty.AreaProId; //被选中对象的proId
string strSql = "select * from City where proId = @proId"; //根据proId得到结果
DataTable dataTable = SQLHelper.ExecuteDataSet(strSql, new SqlParameter("@proId", proId));
string[] colNames = { "cityId", "cityName", "proId" };
cobCounty.ItemsSource = returnArea(dataTable, colNames); //调用函数返回Area对象集
//cobCity.SelectedIndex = 0; //显示市的第一项,避免下面没有选中项
}
