【问题标题】:Binding datagrid comboboxcolumn WPF绑定datagrid comboboxcolumn WPF
【发布时间】:2014-08-23 07:57:22
【问题描述】:

我在尝试绑定我的组合框列时遇到问题。

我有 2 个数据集表,我希望组合框显示 1 个数据集表的值,但所选索引将从另一个数据集获取。

例子:

1.带有Id col和UnitID col的Material DataSet,表示计算此物料重量的单位。

2.ID为col和名称的Units数据集

datagrid 将显示 Material 数据集的详细信息(id 为 textbox col,unitID 为 comboBox col)

我希望我的 datagrid 组合框 col 在组合框选项中显示所有单位名称,并且所选项目将是索引等于材料 UnitID 的项目。

我成功地将我的所有单位名称显示为组合框选项:

cmb.ItemsSource = DS.Units.ToList

cmb.DisplayMemberPath = "EnglishName"

但无法以正确的方式指定 SelectedValuePath 和 SelectedValueBinding。

【问题讨论】:

  • 你能显示你的代码和错误的地方吗?很容易理解
  • 还是不太清楚。据我所知,在组合框中,您一次可以显示 1 个项目。为此,您可以使用 SelectedValue 或 SelectedIndex。
  • 您好,欢迎来到 Stack Overflow。请编辑您的代码以显示您的数据结构和迄今为止的尝试。还要明确说明您收到的结果和错误。
  • 大家好,我将尝试按照建议的方式将 2 个数据集合并为一个。 Sasha,它不是一个普通的 ComboBox,它是一个 comboboxcolumn 项并且它没有(据我所知)一个 selectedIndex 属性。

标签: c# wpf vb.net datagrid combobox


【解决方案1】:

一个数据源可以用于多个组合框,但是两个数据源不能绑定到一个控件。相反,我们可以使用 LINQ 组合这些数据源并将结果数据源分配给组合框。

DataTable material= ds.Tables["Material"];
DataTable units= ds.Tables["Units"];

var query =
    from m in material.AsEnumerable()
    join u in units.AsEnumerable()
    on m.Field<int>("Column1") equals
        u.Field<int>("Column1")
select new
    {
        Text =
            u.Field<string>("EnglishName"),
        Value =
            m.Field<int>("MaterialID")
    };

cmb.ItemsSource = query.ToList();

cmb.DisplayMemberPath = "Text";
cmb.SelectedValuePath = "Value"

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2011-07-21
    • 2018-10-26
    • 2021-03-18
    • 2018-12-28
    • 2023-03-07
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    相关资源
    最近更新 更多