首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-11-01 
combobox数据绑定之后SelectedIndexChanged事件无法触发咋办?功能是窗体运行的时候从数据库加载数据绑定到

combobox数据绑定之后SelectedIndexChanged事件无法触发咋办?
功能是窗体运行的时候从数据库加载数据绑定到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";
        } combobox 数据库
[解决办法]
第一: cmbYuanXi.DisplayMember = "Name";
            cmbYuanXi.ValueMember = "Name";这二个绑定的都是 NAME 没有ID ,而你后面取专业数据的SQL语句是select * from T_YuanXi where Pid = @Id", commbox根本取不到ID,所以你的专业应该是取不出来的

第二:YuanXi yx = (YuanXi)cmbYuanXi.SelectedItem; 你抓一下断点,好像直接从SelectedItem是无法强转为你自定义的类型的。
[解决办法]
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);
            }
[解决办法]
AutoPostBack=true;

这个属性你设置了没有?如果不设置或为false是不是触发的
[解决办法]

引用:

没用呀    调试运行的时候没有报错    窗体运行时自己家触发了一次SelectedIndexChanged事件  listbox里面确实也出现了该院系对应的专业    问题是  我在去点下拉框,选择其他的专业,listbox里面的东西一直都是第一个院系对应的那些专业    combobox里面的选项确实已经改变了  然后3楼的大哥你的方法也不行啊~~~    感觉就像是SelectedIndexChanged这个事件触发不了的样子    除了窗体加载的时候第一次自己触发的那次


listBox的内容要不要先清空再绑定新提取的列表啊?不然可能把新提取的内容加到原来内容的后面了。comboBox的列表项要更改绑定就是这样。

热点排行