我在Windows窗体上有2个DropDownList组合框,它们都是从同一个DataSet(人员列表)填充的,但是它们用于不同的目的(项目经理/审阅者)。如果我将它们的数据源都设置为DataSet,它们都绑定到DataSet并串联更改。我是否遗漏了某些内容,或者我是否必须以编程方式将数据集的行和列读入Items集合而不是直接使用DataSet?或者复制DataSet?
在另一种形式上,我会多次遇到同样的问题。
答案 0 :(得分:5)
combo1.DataSource = payDS.Tables[0];
combo1.BindingContext = new BindingContext();
combo1.DisplayMember = "staff_name";
combo1.ValueMember = "staff_id";
combo2.DataSource = payDS.Tables[0];
combo2.BindingContext = new BindingContext();
combo2.DisplayMember = "staff_name";
combo2.ValueMember = "staff_id";
我的诀窍。
答案 1 :(得分:1)
这是正确的行为。基本上,您需要克隆数据,以便两者的实际数据源不同。直接从数据表中获取组合的唯一令人信服的理由是,当您真正想要更改数据表中的数据时。
您可以做的是将Linq用于DataTable,并选择具有名称和值的一致类型。然后使用combo.Datasource,combo.ValueMember和combo.DisplayMember加载下拉列表。