.Net ComboBox绑定问题

Chr*_*eis 3 .net sorting combobox selectedvalue

我有2个组合框,每个组合都绑定到相同的DataTable,如下所示:

    channelTypeCB.DataSource = SynergyData.ds.Tables["ChannelTypes"];
    channelTypeCB.DisplayMember = "channelType";
    channelTypeCB.ValueMember = "channelTypeID";
    channelTypeCB.BindingContext = new BindingContext();

    newSKChanTypeCB.DataSource = SynergyData.ds.Tables["ChannelTypes"];
    newSKChanTypeCB.DisplayMember = "channelType";
    newSKChanTypeCB.ValueMember = "channelTypeID";
    newSKChanTypeCB.BindingContext = new BindingContext();
Run Code Online (Sandbox Code Playgroud)

当我单击按钮将记录插入数据库时​​,我使用channelType.SelectedValue ...返回不正确的值.我觉得它与使用ComboBox排序(我在设计视图中设置控件的属性中)有关.有人遇到过这个问题吗?

这是使用C#为winforms应用程序编程的

编辑:

例如,我的Datatable存储的值如下:

channelType    channelTypeID
Web             2
Mailer          3
Catalog         4
Run Code Online (Sandbox Code Playgroud)

这在组合框中排序,当我选择第一个项目(排序时为"目录")时,SelectedValue返回2,当我选择第二个项目时它返回3 ....我本来希望"目录"到返回4

Chr*_*eis 5

MSDN ComboBox.Sorted

可能与此有关

尝试在数据绑定控件上设置Sorted属性会引发ArgumentException.您必须使用基础数据模型对数据进行排序.

(虽然没有得到任何错误)

因此,我没有使用ComboBox.sort,而是对DataTable的DefaultView进行排序:

SynergyData.ds.Tables["ChannelTypes"].DefaultView.Sort = "channelType";
Run Code Online (Sandbox Code Playgroud)

不相信这是最好的方法,但它有效,现在selectedValue返回正确的东西