zoukankan      html  css  js  c++  java
  • ComboBox的联动

    窗体搭建:

    实现功能: 加载年级下拉框

                   选中年级时加载出科目下拉框

    加载年级下拉框:

    第一步,在DAL层中写一个方法,检索所有的年级名称集合,返回的是泛型集合List<>

            public List<Grade> LoadAllGradeToList()
            {       
                string sql = "select * from grade";
                DataTable dt = SQLHelper.ExecuteDataTable(sql);
                MyTool tool = new MyTool();
                List<Grade> list=tool.DataTableToList<Grade>(dt);
                return list;
            }

    第二步,在BLL层对DAL层中的所有方法做传递

       public class GradeBLL
        {
           GradeDAL dal = new GradeDAL();
           public List<Grade> getAllGradeList() 
           {
               return dal.LoadAllGradeToList();
           }
        }

    第三步,在load窗体中绑定年级下拉框列

     private void FrmSeachByGrade_Load(object sender, EventArgs e)
            {
                //绑定年级下拉框
                List<Grade> list = grade.LoadAllGradeToList();
                cboGrade.ValueMember = "GradeId";
                cboGrade.DisplayMember = "GradeName";
                cboGrade.DataSource = list;
            }

    实现效果:

    根据年级编号,加载科目下拉框值

    第一步,在DAL层写一个根据年级编号获取科目集合的方法

       public class SubjectDAL
        {
           public List<Subject> getAllSubjectByGradeId(int id) 
           {
               string sql = "select * from subject where gradeid=@id";
               SqlParameter para = new SqlParameter("@id",id);
               DataTable dt = SQLHelper.ExecuteDataTable(sql,para);
               MyTool tool = new MyTool();
               List<Subject> list=tool.DataTableToList<Subject>(dt);
               return list;
           }
        }

    第二步,在BLL层对DAL层中的所有方法做传递

       public class SubjectBLL
        {
           SubjectDAL dal = new SubjectDAL();
    
           public List<Subject> getAllSubjectByGradeId(int id) 
           {
               return dal.getAllSubjectByGradeId(id);
           }
        }

    第三步,UI层

     SubjectBLL subBll = new SubjectBLL();
            private void cboGrade_SelectedIndexChanged(object sender, EventArgs e)
            {
                int selectid = Convert.ToInt32(cboGrade.SelectedValue);
                List<Subject> list = subBll.getAllSubjectByGradeId(selectid);
                cboSubject.ValueMember = "subjectId";
                cboSubject.DisplayMember = "subjectName";
                cboSubject.DataSource = list;

    实现效果:

    但到这里,以上代码实现的功能有一个不可避免的问题

    图片解释:

    如何解决?

    只需要在load事件中写一行代码即可

    cboSubject.DropDownHeight = 106;

    注:出现以下错误的解决方案

    1.将DataSource=泛型集合,调整到最后一行

    2.用标记,在Load 和SelectedIndexChanged之外,定义一个bool类型变量。然后在Load中设置成True,在SelectedIndexChanged中判定flag

  • 相关阅读:
    win10 1607 安装密钥 GVLK
    计算机意外地重新启动或遇到错误。windows安装无法继续。若要安装windows 请单击 确定 重新启动计算机
    在Mac中使用「dd」指令烧录ISO镜像文件到U盘
    一款免费好用的正则表达式工具:Regex Match Tracer
    全国移动短信信息中心号码查询大全
    VS2008 LINK : fatal error LNK1104: cannot open file 'atls.lib'错误解决方案
    理解全概率公式与贝叶斯公式
    改善程序员生活质量的 3+10 习惯
    TCP选项之SO_RCVBUF和SO_SNDBUF
    OpenSSL开发学习总结
  • 原文地址:https://www.cnblogs.com/hr1997/p/5495461.html
Copyright © 2011-2022 走看看