当在一个combobox1中选择某一项号,另一个combobox2中也跟着变化 做法如下:
load()事件
DAL.ProjectCollection c = DAL.DB.Select().From(DAL.Project.Schema).ExecuteAsCollection<DAL.ProjectCollection>();
comboBox1.DisplayMember = DAL.Project.Columns.ProjectName;
comboBox1.ValueMember = "ProjectID";
comboBox1.DataSource = c;//一定要写在DisplayMember和ValueMember下面才能 再次绑定
DAL.TaskCollection tasks = DAL.DB.Select().From(DAL.Task.Schema).ExecuteAsCollection<DAL.TaskCollection>();
DAL.Task _Task = new ProjectManage.DAL.Task();
_Task.TaskID = 0;
_Task.TaskName = "";
tasks.Insert(0, _Task); //加入空行
comboBox2.DisplayMember = DAL.Task.Columns.TaskName;
comboBox2.ValueMember = "TaskID";
comboBox2.DataSource = tasks;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)//从新绑定
{
string projectid = comboBox1.SelectedValue.ToString();
if (projectid == null)
return;
DAL.TaskCollection tasks = DAL.DB.Select().From(DAL.Task.Schema).Where(DAL.Task.Columns.ProjectID).IsEqualTo(projectid).ExecuteAsCollection<DAL.TaskCollection>();
DAL.Task _Task = new ProjectManage.DAL.Task();
_Task.TaskID = 0;
_Task.TaskName = "";
tasks.Insert(0, _Task); //添加空行
comboBox2.DisplayMember = DAL.Task.Columns.TaskName;
comboBox2.ValueMember = "TaskID";
comboBox2.DataSource = tasks; //最后设定数据源
}
///在comboBox1中 显示多级菜单 并显示区分一级、二级、三级等
cbbProjectID.DisplayMember = "ProjectName";
cbbProjectID.ValueMember = "ProjectID";
BindProject(0, "|"); //绑定
public void BindProject(int fid, string prefix) //递归调用
{
DAL.ProjectCollection c = new Select().From(DAL.Project.Schema).Where(DAL.Project.Columns.FatherID).IsEqualTo(fid).ExecuteAsCollection<DAL.ProjectCollection>();
//查询数据库,符合条件的
foreach (DAL.Project p in c)
{
if (fid > 0)
{
p.ProjectName = prefix + "-" + p.ProjectName; //区分一二级
}
cbbProjectID.Items.Add(p);
BindProject(p.ProjectID, prefix + "|"); //区分等级
}
}
}