C# winform

博客园 首页 联系 订阅 管理

当在一个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 + "|");                                    //区分等级
                }

            }
          
        }

posted on 2009-08-10 12:17  fffdc  阅读(1629)  评论(0编辑  收藏  举报