我在应用启动时加载了两个列表。第一个从数据库加载一组完整的数据,第二个从文件中独立加载一组关联的数据
每个列表都加载到BindingSource中,并设置为各自组合框的DataSource。数据加载得很好。
问题是我需要让第二个comboBox只显示其列表中与第一个列表的选定值相对应的元素。
我试图将值成员设置为数据的引用位,但是无法弄清楚如何让comboBoxSettings仅显示其EventID与EventList组合框中所选项的EventID匹配的项。
//Event List comboBox
comboBoxEventList.DataSource = _eventSimPresenter.BindingSourceEventList;
comboBoxEventList.DisplayMember = "DisplayName";
comboBoxSettings.ValueMember = "EventID";
//Settings combobox
comboBoxSettings.DataSource = _eventSimPresenter.BindingSourceUserSettings;
if (_eventSimPresenter.BindingSourceUserSettings.Count > 0)
{
comboBoxSettings.DisplayMember = "EventName";
comboBoxSettings.ValueMember = "EventID";
}
谢谢!
答案 0 :(得分:2)
您可以在_ eventSimPresenter
中创建一个按BindingSourceUserSettings
返回eventId
的方法。当第一个comboBox发生更改时,请选择所选的eventId并更新第二个comboBox数据源:
...
comboBoxSettings.DataSource =
_eventSimPresenter.GetBindingSourceUserSettings(selectedEventId)
if (_eventSimPresenter.BindingSourceUserSettings.Count > 0)
{
comboBoxSettings.DisplayMember = "EventName";
comboBoxSettings.ValueMember = "EventID";
}
换句话说,过滤应该应用于数据源,因为无法通过comboBox进行过滤。