求教ComboBox数据绑定问题:列表值从另一个DataTable取

yingmu 2009-03-10 12:02:25
先说一下我现在的情况:有一个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的时候也会引发这个事件,请问像这种问题你们都是怎么做的呢?
...全文
843 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingmu 2009-03-10
  • 打赏
  • 举报
回复
我也想了用selectedvaluechanged之类的事件,搞一个状态判断,如果是刚fill的时候不触发,如果是改变选项再做EndCurrentEdit处理。难道没有直接一点的办法吗?
yingmu 2009-03-10
  • 打赏
  • 举报
回复
好像在DropDownClosed事件发生之后,ComboBox的当前项才会改变成新选择的项,所以DropDownClosed事件不行。应该用哪个事件呢?
yingmu 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 peihexian 的回复:]
cb_splx.DataBindings.Add("Text", dt, "splx");
[/Quote]
绑定Text的话,ComboBox显示的是商品信息表的商品类型ID。
我觉得绑定还是要绑定SelectedValue属性的,只不过我不知道应该怎样一选择好某一项,在DataGridView中就立即刷新(实际上应该是立即更新到ComboBox绑定的DataTable的相应字段中)。我用DropDownClosed也不行。还有,我怎么能让ComboBox只能选择项,而不能用键盘输入字符呢?在属性设计器里没有关于这个的(例如叫EnableModify之类的属性)。

急盼回复......
starsword 2009-03-10
  • 打赏
  • 举报
回复
用 Click 事件试试呢?
peihexian 2009-03-10
  • 打赏
  • 举报
回复
cb_splx.DataBindings.Add("Text", dt, "splx");
yingmu 2009-03-10
  • 打赏
  • 举报
回复
自己顶一下,汗!

111,126

社区成员

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

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

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