当我尝试绑定我的组合框时,我遇到了问题。
我有2个DataSet表,我希望组合框显示1个DataSet表的值,但是所选索引将从其他DataSet中获取。
示例:
1.具有Id col和UnitID col的材料数据集,用于表示计算此材料重量的单位。
2.Units DataSet With Id col和Name
datagrid将显示Material数据集详细信息(id为textbox col,unitID为comboBox col)
我希望我的datagrid组合框col在组合框选项中显示所有单位名称,所选项目将是索引等于材料UnitID的项目。
我成功地将所有单位名称显示为组合框选项:
cmb.ItemsSource = DS.Units.ToList
cmb.DisplayMemberPath = "EnglishName"
但是无法以正确的方式指定SelectedValuePath和SelectedValueBinding。
答案 0 :(得分:0)
一个数据源可用于多个组合框,但两个数据源无法绑定到一个控件。相反,我们可以使用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"