【发布时间】:2015-12-30 13:58:57
【问题描述】:
下午好,
有没有办法划分一个 ienumerable 并将所有不同的值绑定到不同的组合框。
如下图所示: 我有 10 个组合框,而这些的输入都来自 1 个可枚举的。
我确实可以选择为每个数据库做一个并遍历整个数据库,然后将它们添加到组合框中:
Dim ts As IEnumerable(Of tblLabel)
For Each itms In ts
CmbDescription.Items.Add(itms.Description)
CmbLabelId.Items.Add(itms.LabelID)
...
Next
但我想知道是否可以将 Ienumerable 的不同“列”直接链接到相关组合框的数据源。 我正在寻找类似的选项:
CmbDescription.DataSource = ts.Description
CmbLabelId.DataSource = ts.LabelId
...
可悲的是,据我所知,这个 ienumerable 不能像这样拆分。 另一种解决方法是为所有这些组合框创建所有单独的 ienumerables,但这样代码太多了。
有什么想法吗?
【问题讨论】:
-
为所有这些组合框创建所有单独的 ienumerables,但是代码太多 - 这正是您需要做的。每个
ComboBox都必须有自己的DataSource,在您的情况下,这是分隔的项目集合 -
加入@Fabio 的 cmets。另请注意,此类组合框通常不包含重复项,因此您通常会将每个组合数据源设置为
enumerable.Select({field}).Distinct().ToList() -
您可以将每个组合框的数据源设置为表格,并设置每个组合框的datavalue和datatext字段,然后它将只抓取列表中的那些字段。
-
@MaCron,当在不同的组合框中使用相同的源/集合时,在一个组合框中更改 SelectedValue 也会影响其他组合框。
-
不,它不会,每个控件都有自己的事件以及自己的文本和值。设置 DataSource 并绑定控件后,它们就可以使用了。
标签: vb.net linq combobox ienumerable