最佳功能的代码有多远? 我有两个ComboBox,所以第一个用于选择公司,第二个用于选择与该公司相关的分支机构。
我注意到我可以通过过滤填充数据源的唯一方法。在LINQ上就是这样,也许我错了请花一点时间查看以下片段:
private void cboCompany_SelectedIndexChanged(object sender, EventArgs e)
{
var _index = ((ComboBox)sender).SelectedIndex;
using (DB db = new DB())
{
var su = (from s in db.Branchs select s);
if (cboCompany.SelectedIndex == 0)
{
cboBranch.DataSource = su.Where(x => x.codeCompany == 1).Select(x => x.name).ToList();
}
else if (cboCompany.SelectedIndex == 1)
{
cboBranch.DataSource = su.Where(x => x.codeCompany == 2).Select(x => x.name).ToList();
}
cboBranch.BindingContext = this.BindingContext;
cboBranch.DisplayMember = "name";
cboBranch.SelectedIndex = 0;
}
}
提前致谢!
答案 0 :(得分:2)
我不会手工编码,而是让数据绑定为我做所有这些工作。特别是,它可以这样设置:
Company
类具有获取所有相关分支的属性 - 例如Company.Branches
。如果你使用LINQ to SQL或Entity Framework,那里应该有一个。BindingSource
,bsCompanies
和bsBranches
。cboCompany.DataSource
设为bsCompanies
,将cboBranch.DataSource
设为bsBranches
bsCompanies.DataSource
设置为包含公司的集合/数据集。bsBranches.DataSource
设置为Branches
下的bsCompanies
(表单设计人员应该在执行上一步后执行此操作,如果您的集合是强类型的话)。现在,只要用户在第一个组合中选择其他公司,公司绑定源中的当前项目就会发生变化。这将导致第二个绑定源的绑定重新评估,并将新选择的公司的分支列表设置为第二个组合的源。