【发布时间】:2017-09-03 15:34:03
【问题描述】:
我在我的项目中使用 MVP,但我是 MVP 新手。 我有两个组合框。当我在组合框中选择一个选项时,另一个组合框应该填充新数据。
此操作将在 Presenter 中进行。我在 Presenter 中获得了视图“view1”,并在“view1”中引入了 Combobox1 和 Combobox2 作为属性,因为在下面的方法中我需要“DataSource”、“DisplayMember”、“ValueMember”和“Refresh()”。
但是,当使用模式时,发送一个类似的属性就足够了
public string Combobox2
{
get { return comboBox1.SelectedValue.ToSstring(); }
}
进入 Presenter 而不是整个 Combobox。我该如何解决这个问题?
public void OnSelectedIndexChangedCombobox1()
{
if (view1.Combobox1.SelectedIndex == -1)
{
return;
}
DataTable dt = Tools.GetDataTable("A Path");
var query =
(from o in dt.AsEnumerable()
where o.Field<string>("afield") ==
farmerView.Combobox1.SelectedValue.ToString()
orderby o.Field<string>("anotherfield")
select new KeyValuePair<string, string>(o.Field<string>("field1"),
o.Field<string>("field2"))).ToList();
farmerView.Combobox2SelectedIndexChanged -= OnSelectedIndexChangedCombobox2;
farmerView.Combobox2.DataSource = new BindingSource(query, null);
farmerView.Combobox2.DisplayMember = "Value";
farmerView.Combobox2.ValueMember = "Key";
farmerView.Combobox2.Refresh();
farmerView.Combobox2SelectedIndexChanged +=
OnSelectedIndexChangedCombobox2;
farmerView.Combobox2.SelectedIndex = -1;
}
谢谢
【问题讨论】: