【问题标题】:Windows Forms ComboBox DataBindingWindows 窗体组合框数据绑定
【发布时间】:2017-02-27 08:13:15
【问题描述】:

我正在开发 C# Windows 窗体应用程序,但我的 ComboBox DataBinding 无法正常工作。

这是我的数据源

这就是数据源的填充方式。

private void frmSODetails_Load(object sender, EventArgs e)
    {
        int soid = soSelected.soid;
        this.salesordersTableAdapter.Fill(this.dsSalesOrderDetails.salesorders, soid);
        this.solineitemsTableAdapter.Fill(this.dsSalesOrderDetails.solineitems, soid);
        this.companiesTableAdapter.Fill(this.dsSalesOrderDetails.companies);
        this.Cursor = Cursors.Default;
    }

这是我的表格

这就是我执行 DataBindings 的方式。 选择数据源 (companiesBindingSource) 选择显示成员(公司名称) 选择值成员 (seq) 选择选定值(salesordersBindingSource 中的列组合) 为了确保(选定值:comp)和(值成员:seq)匹配,我使用了预览数据

比较:1 Seq 1 的 compname 值应为 Ampleon

但 ComboBox 不显示 Ampleon,它显示的是公司列表中的第一项。

编辑:我删除了整个表单并创建了一个新表单,它现在可以正常工作。我不确定第一个表格出了什么问题。我只是按照相同的步骤操作。

【问题讨论】:

  • 您是否尝试从 SalesOrders 表中将 ValueMember 和 SelectedValue 设置为 comp
  • 我无法从 SalesOrders 表中将 ValueMember 设置为 comp,因为我的 ComboBox 的 DataSource 是 companiesBindingSource 。我只能从绑定源中可用的列中进行选择。

标签: c# winforms data-binding combobox


【解决方案1】:

您将错误的列字段调用到 texbox。不是调用存储字段数据的第二列,而是调用第一列,我认为它是一个递增的字段。您应该以编程方式进行。 参考这个网站:https://msdn.microsoft.com/en-us/library/aa984341(v=vs.71).aspx 它会给你一个先机 看看有没有帮助

【讨论】:

  • 我不确定你的意思。但为了澄清,我正在填写一个 ComboBox。 DataSource 是表SalesOrders,其中包含comp 的列字段。我没有将compname 直接存储到SalesOrders 中,而是有一个名为companies 的单独表。表SalesOrder和表companies相互关联,使得SalesOrder.comp中的值等于companies.seq
  • 在这种情况下,我使用表 companies 中的公司列表填充组合框,DisplayMember 是公司名称 (compname),ValueMember 是公司唯一标识符 (seq )。 SelectedValue 绑定到表salesorder 列字段comp,其中包含与公司唯一标识符(seq)等效的整数值
  • 就我而言。我将创建一个视图函数来获得我想要的结果。然后将创建视图中的字段调用到组合框中,其中 salesorder ID = 公司 ID 的列字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多