新人 Winform comboBox 问题。。。

lannypayne 2009-09-11 11:30:13
我有2个comboBox c1,c2 当选择c1为1的时候 需要c2显示123 3个选项(数据库里读的)
当选择c1为2的时候 需要c2变成4567 4个选项
也就是联动的查询数据库
现在我遇到了问题 当运行程序第一次点c1这个comboBox的时候 他是正常的 如果选择了2 他是会出来 4567 4个选项
但是那时候我再选择1的时候 c2就不动了 还是现实4567 不会变成123的
我用断点看了下 貌似是到datasource的时候错误 我实在找不到方法解决 请帮帮我~~谢谢
我写的代码如下

private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
DataSet ds = new DataSet();
String comboxDepStr = "SELECT * FROM Department WHERE DDeptType = 1 OR DDeptType = " + comboBox3.SelectedValue;
SqlConnection conn = new SqlConnection("server=192.168.1.202;uid=sa;pwd=lanny1019;database=InsureDB");
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand(comboxDepStr, conn);
sda.Fill(ds);
conn.Close();
comboBox4.Items.Clear();
comboBox4.DataSource = ds.Tables[0];
comboBox4.DisplayMember = "DName";
comboBox4.ValueMember = "DepartmentId";
}
catch
{

}
}
...全文
225 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
lannypayne 2009-09-15
  • 打赏
  • 举报
回复
...
zhaoweiting0609 2009-09-11
  • 打赏
  • 举报
回复
得把表清空,每次查询前
lannypayne 2009-09-11
  • 打赏
  • 举报
回复
反正这个一直在的 所以我就先在数据库里写死了一条
lannypayne 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zm03173225 的回复:]
把Department 表的内容贴出来吧,语句为什么DDeptType = 1是一直在的呢,如果选的值是1的话感觉多次一举呢
[/Quote]

DepartmentId DName DDeptType
1 ---请选择--- 1
2 美洲部 2
3 欧洲部 2
4 中东非洲部 2
5 亚太部 2
6 一号营业部 3
7 二号营业部 3

对应的DeptType表里
1 ---请选择---
2 本部
3 营业部
lannypayne 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 a7373773 的回复:]
第二个修改的地方

sda.Fill(ds);
改成sda.Fill(ds,"Department ");


                conn.Close();
                comboBox4.Items.Clear();
                comboBox4.DataSource = ds.Tables["Department"];
                comboBox4.DisplayMember = "DName";
                comboBox4.ValueMember = "DepartmentId";

这样减少歧义
[/Quote]

。。。。。。。。。
这个改了还是一样的 只能一次的。。
zm03173225 2009-09-11
  • 打赏
  • 举报
回复
把Department 表的内容贴出来吧,语句为什么DDeptType = 1是一直在的呢,如果选的值是1的话感觉多次一举呢
lannypayne 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dancingbit 的回复:]
要不,在

comboBox4.DataSource = ds.Tables[0];

前面加个

comboBox4.DataSource = null;

[/Quote]

null没有用哦。。。。
lannypayne 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 a7373773 的回复:]
String comboxDepStr = "SELECT * FROM Department WHERE DDeptType = 1 OR DDeptType = '" + comboBox3.SelectItme.ToString() + "'";
[/Quote]

语句没有问题。。。那个是int型的 不要引号的。。。就是条件怪异了点 呵呵
dancingbit 2009-09-11
  • 打赏
  • 举报
回复
要不,在

comboBox4.DataSource = ds.Tables[0];

前面加个

comboBox4.DataSource = null;
zm03173225 2009-09-11
  • 打赏
  • 举报
回复
看错了 额...汉 没有看全
zm03173225 2009-09-11
  • 打赏
  • 举报
回复
感觉语句都不对,不知道为什么前面竟然可以查询出来
dancingbit 2009-09-11
  • 打赏
  • 举报
回复
Sorry,没看到这个ds是new出来的...
a7373773 2009-09-11
  • 打赏
  • 举报
回复
第二个修改的地方

sda.Fill(ds);
改成sda.Fill(ds,"Department ");


conn.Close();
comboBox4.Items.Clear();
comboBox4.DataSource = ds.Tables["Department"];
comboBox4.DisplayMember = "DName";
comboBox4.ValueMember = "DepartmentId";

这样减少歧义
dancingbit 2009-09-11
  • 打赏
  • 举报
回复
sda.Fill(ds);
前面加一句:ds.Tables.Clear();
a7373773 2009-09-11
  • 打赏
  • 举报
回复
SQL 语句 连接的时候有问题

自己查看下
a7373773 2009-09-11
  • 打赏
  • 举报
回复
String comboxDepStr = "SELECT * FROM Department WHERE DDeptType = 1 OR DDeptType = '" + comboBox3.SelectItme.ToString() + "'";
xunis 2009-09-11
  • 打赏
  • 举报
回复
comboBox4.DataSource = ds.Tables[0] 换成下面的试试

If ds.Tables.Item(0).Rows.Count > 0 Then
For i = 0 To ds.Tables.Item(0).Rows.Count - 1
Me. comboBox4.Items.Add(ds.Tables.Item(0).Rows(i).Item(0))
Next i
comboBox4.SelectedIndex = 0
End If
fg5551 2009-09-11
  • 打赏
  • 举报
回复
引用 5 楼 a7373773 的回复:
第二个修改的地方

sda.Fill(ds);



conn.Close();
comboBox4.Items.Clear();
comboBox4.DataSource = ds.Tables["Department"];
comboBox4.DisplayMember = "DName";
comboBox4.ValueMember = "DepartmentId";


按照你这样写combobox4能显示值吗..我感觉显示不出来 哦


代码弄规范一点吧 看到恼火的很
利用combobox c1的 selectindexchange改变事件 来实现

lannypayne 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 visionary0812 的回复:]
选着C1后 先把C2清空 在查询 就OK乐
[/Quote]

我已经这样做了。。。不对额
visionary0812 2009-09-11
  • 打赏
  • 举报
回复
选着C1后 先把C2清空 在查询 就OK乐
加载更多回复(8)

111,125

社区成员

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

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

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