winform中二级联动的Combobox

Microtigers 2009-03-23 03:16:02
有个省 市的二级联动Combobox
private void prov_SelectedIndexChanged(object sender, EventArgs e)
{
string sql = "select * from city where prov_id=" + prov.SelectedValue.ToString();
// MessageBox.Show(sql);
OleDbDataAdapter ad = new OleDbDataAdapter(sql, conn);
ds.Tables["city"].Clear();
ad.Fill(ds,"city");
city.DataSource=ds.Tables["city"];
city.DisplayMember = "city_name";
city.ValueMember = "city_id";

}
当省SelectedIndexChanged的时候市(city)填充新的数据
ds.Tables["city"].Clear(); 提示"错误未将对象引用设置到对象的实例。"
什么原因啊
...全文
582 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
whj416 2009-08-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sylarww 的回复:]
当你第一次将数据填充,ds中不存在表city,这时候执行clear();当然错误了!
可以进行判断
if(ds.Tables.Count!=0)
{
  ds.Tables.Clear();
}
[/Quote]
7楼的答案才是问题的关键,我也用到了,谢谢
love41349279 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Sylarww 的回复:]
当你第一次将数据填充,ds中不存在表city,这时候执行clear();当然错误了!
可以进行判断
if(ds.Tables.Count!=0)
{
ds.Tables.Clear();
}
[/Quote]
有道理
OKILOVE 2009-03-24
  • 打赏
  • 举报
回复
ds.Tables["city"].Clear();
去掉即可,反正Fill之后ds是fill后的dataset,原因在于你原来的ds.Tables["city"]不存在或者ds没有引用到内容。
贫僧又回来了 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Microtigers 的回复:]
引用 5 楼 gwqwyh 的回复:
引用 1 楼 Guyschaos 的回复:
ds.Tables["city"]是哪里来的呢?

DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("city"));


ad.Fill(ds,"city");
用ad填充的啊!
[/Quote]
照你说的那在填充之前数据集里连city这表都没有的那为什么要Clear呢?
utopia54 2009-03-23
  • 打赏
  • 举报
回复
up
Sylarww 2009-03-23
  • 打赏
  • 举报
回复
当你第一次将数据填充,ds中不存在表city,这时候执行clear();当然错误了!
可以进行判断
if(ds.Tables.Count!=0)
{
ds.Tables.Clear();
}
Microtigers 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gwqwyh 的回复:]
引用 1 楼 Guyschaos 的回复:
ds.Tables["city"]是哪里来的呢?

DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("city"));
[/Quote]

ad.Fill(ds,"city");
用ad填充的啊!
程序yy 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Guyschaos 的回复:]
ds.Tables["city"]是哪里来的呢?
[/Quote]
DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("city"));
Microtigers 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 compleat 的回复:]
赋值的时候类型转换不正确
string sql = "select * from city where prov_id=" + 省的数据源.rows[prov.SelectedIndex][省名]。tostring();
[/Quote]

省的数据是名字为prov的Combobox的值
prov.SelectedValue.ToString(); 不对吗!?
jlj84237485 2009-03-23
  • 打赏
  • 举报
回复
帮顶一下
compleat 2009-03-23
  • 打赏
  • 举报
回复
赋值的时候类型转换不正确
string sql = "select * from city where prov_id=" + 省的数据源.rows[prov.SelectedIndex][省名]。tostring();
贫僧又回来了 2009-03-23
  • 打赏
  • 举报
回复
ds.Tables["city"]是哪里来的呢?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧