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 [email protected]";
           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

时间: 2024-11-05 18:50:29

ComboBox的联动的相关文章

装13失败后的逆袭(ComboBox的联动)

当我们在做ComboBox的联动的时候飞一般的敲出自认为完美的代码.在运行的时候突然变得不完美了. 比如: 如果发生了这种情况会不会就卡磁了呢 当然不会作为程序猿的我们考的是我们聪明的大脑,当然会想出解决办法. 接下来我们来看一下解决方法: (1)将DataSource=泛型集合,调整到最后一行 private void Form1_Load(object sender, EventArgs e) { cboSubject.DropDownHeight = 106; cboGrade.Value

【EasyUI】Combobox的联动和onChange/onSelect事件绑定

[效果图] (1)当选择“产品名称”这个查询项目时,运算条件只有“等于”和“不等于”,如下图所示. (2)当用户选择可以进行数值计算的查询项目时,运算条件就会有很多,如下图所示. [实现代码] 1.HTML代码 <table cellpadding="0" cellspacing="1" border="0"> <tr> <td>选择查询项目:</td> <td><input id

C# Combobox联动

接上一篇博文,对界面做一个小修改,做4个combobox,形成窗口之间的联动: 界面如下: 选择combobox里的条件,单击查询获取数据 首先连接数据库,获取到数据到第一个combobox里,代码在上一篇博文里有,这里不多加叙述,实现之后进行第一个和第二个combobox的联动: 打开combobox1的SelectedIndexChanged()函数,当Combobox的值发生变化时,Combobox的值随之变化,同理Combobox3的联动写在Combobox2的SelectedIndex

vs2013+MVC3.0+EasyUI的ComboBox联动使用(二)

?? vs2013+MVC3.0+EasyUI的ComboBox联动使用(二) 简单介绍:在vs2013(.net4.0)中使用MVC3.0对于EasyUI中ComboBox的联动使用. 载入ComboBox数据,而且实现联动效果, 本文将採用EasyUI中的Date控件与ComboBox实现联动效果,如图: ----------------------------------------------------------------------------------------------

.net+easyui--combobox

一:预定义结构的 select 元素创建组合框(combobox)值固定写死 <select class="easyui-combobox" name="state" style="width: 200px;"> <option value="AL">Alabama</option> <option value="AK">Alaska</option&g

C#对象为Null模式(Null Object Pattern)实例教程

本文以实例形式简单讲述了C#对象为Null模式(Null Object Pattern),分享给大家供大家参考.具体实现方法如下: 所谓的"对象为Null模式",就是要求开发者考虑对象为Null的情况,并设计出在这种情况下的应对方法. 以前面" "一文中的例子来说,在我们的客户端程序中只考虑了用户输入1,2,3的情况,如果用户输入其它数字,比如4,就没有一个对应的IBall接口实现类实例产生,于是会报如下的错: 为了应对这种情况,我们专门设计一个类,当用户输入1,2

C#读取视频的宽度和高度等信息的方法

本文实例讲述了C#读取视频的宽度和高度等信息的方法.分享给大家供大家参考.具体实现方法如下: 读取方式:使用ffmpeg读取,所以需要先下载ffmpeg.网上资源有很多. 通过ffmpeg执行一条CMD命令可以读取出视频的帧高度和帧宽度信息. 运行效果如下图所示: 蓝线框中可以看到获取到的帧高度和帧宽度. 接下来的事情就简单了.构造一个命令,然后执行就ok.我并未测试过所有视频格式,估计常见的格式应该都支持. 执行命令的代码如下: 代码如下: /// <summary> /// 执行一条com

Combobox下拉框两级联动

下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科目两张表,每门科目都对应一个年级,所以我们可以用两个下拉框(Combobox)来存储年级和科目信息来供用户选择.界面如下: 这时如果我们将科目对应的下拉框直接绑定科目表时,用户选择一个年级后还要从所有科目中进行选择就会降低系统的友好性,甚至可能出现没有任何意义的查询语句.我们可以先绑定年级下拉框的数

JQuery EasyUI Combobox 实现省市二级联动菜单

//编辑修改或新增页面联动可以这样写 jQuery(function(){    // 省级     $('#province').combobox({         valueField:'itemvalue', //值字段         textField:'itemtext', //显示的字段         url:'/user/sort/province_list',         panelHeight:'auto',         required:true,