这真的很奇怪。我想选择一个州,并在另一个组合框中加载来自该州的城市。
在选择组合框中的第一项时,它的工作时间为:
这是我的全班。 if
中的selectedIndexChanged
语句是为了确保选择了某些内容。问题是,如果我将其设置为cmbState.SelectedIndex >= 0
,则会引发异常,因为在初始加载时,comboBox在那里没有.State
变量,而不是.Value
。
我不知道这是否有意义。
private void MainForm_Load(object sender, EventArgs e)
{
LoadDepartmentsToComboBox();
}
private void LoadCitiesToComboBox(long StateID)
{
cmbCity.DataSource = null;
CityRepository cityRepo = new CityRepository();
cmbCity.DataSource = cityRepo.FindAllCities().Where(c => c.IDState == StateID);
cmbCity.DisplayMember = "Name";
cmbCity.ValueMember = "ID";
}
private void LoadDepartmentsToComboBox()
{
cmbState.DataSource = null;
StateRepository stateRepo = new StateRepository();
cmbState.DataSource = stateRepo.FindAllStates();
cmbState.DisplayMember = "Name";
cmbState.ValueMember = "ID";
}
private void cmbState_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbState.SelectedIndex > 0)
{
LoadCitiesToComboBox(Convert.ToInt64(cmbState.SelectedValue));
}
}
如果我执行使用cmbState.SelectedIndex >= 0
,则会收到此异常:
无法投射类型的对象 输入'DocumentScannerDanyly.State' 'System.IConvertible'。 'System.IConvertible'。
当我不使用SelectedIndex >= 0
并使用普通旧版>0
时,除非选择了第一个项目,否则一切正常;可以理解,因为它没有考虑第一项。
非常感谢你的帮助。
答案 0 :(得分:1)
复杂DataBinding接受IList或IListSource作为数据源。
检查this。