combobox数据绑定之后SelectedIndexChanged事件无法触发咋办?

坚持沉迷 2013-10-30 10:48:07
功能是窗体运行的时候从数据库加载数据绑定到combobox 然后通过下拉框选择一个院系 listbox中可以显示该院系对应的专业 可是运行的时候怎么改变下拉框的选项 listbox显示的还是第一个院系对应的专业 怎么破? 新手求教育~~
这是窗体加载的代码:
private void fmAddStudent_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
DataTable table = SqlHelper.DataTable("select * from T_YuanXi where Pid = 0");
foreach (DataRow row in table.Rows)
{
YuanXi yx = new YuanXi();
yx.Id = (int)row["Id"];
yx.Name = (string)row["Name"];
yuanxi.Add(yx);
}
cmbYuanXi.DataSource = yuanxi;
cmbYuanXi.DisplayMember = "Name";
cmbYuanXi.ValueMember = "Name";
}
这是combobox的事件代码:
private void cmbYuanXi_SelectedIndexChanged(object sender, EventArgs e)
{
YuanXi yx = (YuanXi)cmbYuanXi.SelectedItem;
DataTable table = SqlHelper.DataTable("select * from T_YuanXi where Pid = @Id", new SqlParameter("@Id", yx.Id));
foreach (DataRow row in table.Rows)
{
YuanXi yx1 = new YuanXi();
yx1.Id = (int)row["Id"];
yx1.Name = (string)row["Name"];
yuanxi1.Add(yx1);
}
listZhuanYe.DataSource = yuanxi1;
listZhuanYe.DisplayMember = "Name";
listZhuanYe.ValueMember = "Name";
}
...全文
390 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
坚持沉迷 2013-10-31
  • 打赏
  • 举报
回复
解决了~ 谢谢提供的思路 单单把yuanxi1这个集合清空还是不行的 我在SelectedIndexChanged里面 先把lstZhuanYe.DataSource = null; 然后yuanxi1.Clear(); 后面代码不变,然后实现了
坚持沉迷 2013-10-31
  • 打赏
  • 举报
回复
引用 7 楼 u012503688 的回复:
[quote=引用 4 楼 u010788301 的回复:] 没用呀 调试运行的时候没有报错 窗体运行时自己家触发了一次SelectedIndexChanged事件 listbox里面确实也出现了该院系对应的专业 问题是 我在去点下拉框,选择其他的专业,listbox里面的东西一直都是第一个院系对应的那些专业 combobox里面的选项确实已经改变了 然后3楼的大哥你的方法也不行啊~~~ 感觉就像是SelectedIndexChanged这个事件触发不了的样子 除了窗体加载的时候第一次自己触发的那次
listBox的内容要不要先清空再绑定新提取的列表啊?不然可能把新提取的内容加到原来内容的后面了。comboBox的列表项要更改绑定就是这样。[/quote] 出错了 调试的时候说设置了DataSource属性之后不能对Items进行操作
超级橡树 2013-10-31
  • 打赏
  • 举报
回复
引用 4 楼 u010788301 的回复:
没用呀 调试运行的时候没有报错 窗体运行时自己家触发了一次SelectedIndexChanged事件 listbox里面确实也出现了该院系对应的专业 问题是 我在去点下拉框,选择其他的专业,listbox里面的东西一直都是第一个院系对应的那些专业 combobox里面的选项确实已经改变了 然后3楼的大哥你的方法也不行啊~~~ 感觉就像是SelectedIndexChanged这个事件触发不了的样子 除了窗体加载的时候第一次自己触发的那次
listBox的内容要不要先清空再绑定新提取的列表啊?不然可能把新提取的内容加到原来内容的后面了。comboBox的列表项要更改绑定就是这样。
坚持沉迷 2013-10-30
  • 打赏
  • 举报
回复
= =找了半天还是解决不了 先去休息明天再继续研究 有没有前辈指导指导~
坚持沉迷 2013-10-30
  • 打赏
  • 举报
回复
AutoPostBack=true;
这个是窗体的属性还是combobox的? 找不到啊
坚持沉迷 2013-10-30
  • 打赏
  • 举报
回复
没用呀 调试运行的时候没有报错 窗体运行时自己家触发了一次SelectedIndexChanged事件 listbox里面确实也出现了该院系对应的专业 问题是 我在去点下拉框,选择其他的专业,listbox里面的东西一直都是第一个院系对应的那些专业 combobox里面的选项确实已经改变了 然后3楼的大哥你的方法也不行啊~~~ 感觉就像是SelectedIndexChanged这个事件触发不了的样子 除了窗体加载的时候第一次自己触发的那次
Andy__Huang 2013-10-30
  • 打赏
  • 举报
回复
AutoPostBack=true; 这个属性你设置了没有?如果不设置或为false是不是触发的
threenewbee 2013-10-30
  • 打赏
  • 举报
回复
cmbYuanXi.ValueMember = "Name"; => cmbYuanXi.ValueMember = "Id"; yuanxi1.Clear(); foreach (DataRow row in table.Rows) { YuanXi yx1 = new YuanXi(); yx1.Id = (int)row["Id"]; yx1.Name = (string)row["Name"]; yuanxi1.Add(yx1); }
iloli 2013-10-30
  • 打赏
  • 举报
回复
第一: cmbYuanXi.DisplayMember = "Name"; cmbYuanXi.ValueMember = "Name";这二个绑定的都是 NAME 没有ID ,而你后面取专业数据的SQL语句是select * from T_YuanXi where Pid = @Id", commbox根本取不到ID,所以你的专业应该是取不出来的 第二:YuanXi yx = (YuanXi)cmbYuanXi.SelectedItem; 你抓一下断点,好像直接从SelectedItem是无法强转为你自定义的类型的。

110,502

社区成员

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

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

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