日期:2014-05-18  浏览次数:20811 次

求教ComboBox数据绑定问题:列表值从另一个DataTable取
先说一下我现在的情况:有一个DataTable(取名为dt_sp),里面的内容取自商品表,放的是商品的具体信息,与问题相关的字段有ID,名称,类型,其中类型中放的是类型的ID,有另外一个DataTable(取名为dt_lx),里面的内容取自商品类型表,放的是商品类型的信息,字段有类型ID,类型名称,我界面上放了一个ComboBox(取名为cb_splx),我的想法是:通过ComboBox来选择一个商品类型,把选择的类型ID放到商品信息的商品类型字段里,这样怎么绑定呢?
我现在的绑定方式是这样:
  cb_splx.DataBindings.Clear();//清除所有数据绑定
  cb_splx.DataSource = dt_lx;//将数据绑定到商品类型表
  cb_splx.DisplayMember = "lxmc";//显示值为类型名称
  cb_splx.ValueMember = "lxid";//选项值为类型ID
  cb_splx.DataBindings.Add("SelectedValue", dt, "splx");//将cb_splx的值绑定到商品信息表的splx字段
(从网上没有找到这种绑定方法,我自己试的,不知道对不对)
现在的问题是,当我刚fill两个DataTable后,ComboBox显示的确实是当前这条商品信息的类型名称,但我改变ComboBox里的选择项,对应的DataGridView(我用来显示商品信息的)的商品类型并没有改变,只有我把输入焦点从ComboBox移开,而且还必须是移到DataGridView上时,DataGridView里的商品类型字段才会刷新显示,像TextBox我在Keypress事件里用EndCurrentEdit可以强制刷新,在ComboBox中,我应该用哪个事件呢?很明显,用什么selectedvaluechanged之类的事件不行,因为它们在fill的时候也会引发这个事件,请问像这种问题你们都是怎么做的呢?

------解决方案--------------------
cb_splx.DataBindings.Add("Text", dt, "splx");
------解决方案--------------------
用 Click 事件试试呢?