绑定组合框不匹配
本文关键字:不匹配 组合 绑定 | 更新日期: 2023-09-27 18:17:26
我是C#新手,但不是编程新手。我一直在玩VS,对这门语言越来越熟悉,并被困在绑定到内存数据集的int数据表列的组合框上。
我在 DataGridView 上工作,创建 DataGridViewComboBoxColumn 并使用由 Key:int
和 Desc:string
组成的自定义类填充其下拉列表没有问题。 ValueMember = Key
,DisplayMember = Desc
。数据源保留为 null,因为列表直接内置到 ComboBox 中。 从组合框中选择并保存更改在网格中工作正常。
然后我搬到了一个组合盒。 网格和组合框具有完全相同的 BindingSource。所以是的,他们同时指向同一行。
我将组合框绑定为:
cbCtrl.DataBindings.Add( "Text", myBindingSource, ColDBName );
在不填充组合框的下拉项的情况下,我看到原始 int 值显示在组合框中。 我使用网格更改行,组合框值也会更改。 所以这很好。
然后我填充 ComboBox 中的项目下拉列表(与网格的列绑定到同一列相同(,这很麻烦。 原始 int 值(例如 19(与 ComboBox 下拉列表中的正确"键"项不匹配。 我试过DropDownStyle = DropDown & DropDownList,但都没有运气。 我已经寻找了几个小时试图找到解决方案。 没有事件挂接到组合框。 我希望原始值自动连接到 ComboBox 下拉列表中匹配的"键"项。
还有什么可以勾搭的吗? 令人沮丧,因为我期待一些小事。
任何帮助将不胜感激。谢谢。
*编辑:下拉列表实际上来自填充的BindingList<>并且BindingList<>作为ComboBox.DataSource提供。
我终于偶然发现了答案:
cbCtrl.DataBindings.Add( "SelectedValue", myBindingSource, ColDBName (;
这就是我所需要的。我从一篇很棒的文章中得到它http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial?msg=5325959#xx5325959xx