ComboBox的数据联动

实现效果:

点击年级下拉框值时,获取科目下拉框值

一:加载年级下拉框值

GradeDAL层:

      //检索所有年级名称集合,返回的是泛型集合List<Grade>
      public List<Grade> GetAllGrade()
      {
          string sql = "select * from  Grade";
          //将sql转成内存中的一张表
          DataTable dt = SQLHelper.ExecuteDataTable(sql);
          MyTool tool = new MyTool();
          //dt转成list
          List<Grade> list = tool.DataTableToList<Grade>(dt);
          return list;

      }

GradeBLL层:

        //植入DAL层的对象
        GradeDAL gradeDal=new GradeDAL();
        public List<Grade> GetAllGrade()
        {
            return gradeDal.GetAllGrade();
        }

UI层:

  private void frmSelectResult_Load(object sender, EventArgs e)
        {
            //清空
            cboSubject.DropDownHeight = 106;

            GradeBLL gradeBll = new GradeBLL();
            //对年级下拉框绑定数据
            List<Grade> list = gradeBll.GetAllGrade();

            cboGrade.ValueMember = "GradeId";
            cboGrade.DisplayMember = "GradeName";
            cboGrade.DataSource = list;

           // flag = true;
        }

二:根据年级编号,去加载科目下拉框数据

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

SubjectDAL层:

   public List<Subject> GetAllSubject(int id)
       {
           string sql = "select * from Subject where Gra[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;

       }

2.Bll层做数据传递

      SubjectDAL subjectDal = new SubjectDAL();

      public List<Subject> GetAllSubject(int id)
      {
          return subjectDal.GetAllSubject(id);
      }

3.UI层 下拉框选中项发生改变的事件:SelectedIndexChanged

        SubjectBLL subBll = new SubjectBLL();
        private void cboGrade_SelectedIndexChanged(object sender, EventArgs e)
        {
           // if (flag)
           // {
                int selectid = Convert.ToInt32(cboGrade.SelectedValue);
                List<Subject> list = subBll.GetAllSubject(selectid);

                cboSubject.ValueMember = "SubjectId";
                cboSubject.DisplayMember = "SubjectName";
                cboSubject.DataSource = list;
            //}
        }

注:

解决方案:

1.若碰到IConvertable错误的时候,如果是下拉框数据绑定,规避的方案:

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

2.用标记,在Load 和SelectedIndexChanged之外,定义一个bool类型变量。

然后在Load中设置成True,在SelectedIndexChanged中判定fla

当年级下拉框选择一个没有科目的年级后,科目下拉框还是占用了上次有数据的下拉框个数!

解析:可以使用 cboSubject.DropDownHeight = 106

时间: 2024-11-07 01:47:52

ComboBox的数据联动的相关文章

EasyUI可编辑datagrid用combobox实现多级联动

<body> <script type="text/javascript"> $(function(){ var editing ; //判断用户是否处于编辑状态 var flag ; //判断新增和修改方法 $('#set_schedule').datagrid({ idField:'id' , fitColumns: false , url:'scheduleAction_loadScheduleData.action?sureDocumentId='+$(

easyui combobox 本地数据实现输入中文拼音简码过滤数据

<pre name="code" class="html"><input class="easyui-combobox" name="language" data-options=" data: baseData.emp.ck, width: 105, height: 26, valueField: 'id', textField: 'text', inputCode: 'inputCode', /

【H3 BPM工作流程产品小故事】第十四篇 数据字典与数据联动

小明遇到了点麻烦,他昨天又收到了行政主管发来的邮件,要求把出差申请单改由H3 BPM进行,表单如下 行政主管的出差申请表 小明对表单进行了调整,设计出了一份适合在系统中使用的表单,但在“出差地点”控件的使用上遇到了问题. 小明查看产品资料,在“系统管理-系统参数-数据字典”中录入了地区数据字典,并在下拉菜单控件的属性“MasterDataCategory”中设置了关联,但是却不知道如何将“省”“市”两个控件进行数据关联. 小明设计的表单 数据字典-省 数据字典-市 下拉菜单属性设置 表单显示结果

winform中的ListBox和ComboBox绑定数据用法实例

本文实例讲述了winform中的ListBox和ComboBox绑定数据用法.分享给大家供大家参考.具体实现方法如下: 本例实现将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容,代码如下: 代码如下: //- //自定义了Person类(有Name,Age,Heigth等属性) List<Person> persons=new List<Person>(); persons.Add(new Person("WuMiao",18,17

easyui combobox setValue数据绑不上

var synj = "<%=arrbj[3]%>"; var xnxq = "<%=xnxq%>"; OnchangeSelect($("#nj"), "LogicLayer.Sys.OptionInfo", "EasyUIDownListEvent", "xnxqrxnj," + xnxq + ",,",true) $("#nj&

winform combobox绑定数据

mboBox下拉菜单控件,在数据库内的ComboBox应用的表进行修改时,如果是用的普通方法,显示数据一个方法,添加数据一个方法 这样会导致程序后期维护难度增加,在这里使用数据绑定来让ComboBox数据实现根据数据库对应表数据显示,降低数据维护难度. 1.首先将要ComboBox所需要的表的数据全部查询出来 2.对查询获得的数据用实例化泛型集合List进行接收 3.设置需要显示的列[数据] 4.设置对数据库操作需要的列[数据] public Form3() //窗体打开自动执行的数据 { In

datatable绑定comboBox显示数据[C#]

实现功能: datatable绑定comboBox,在下拉菜单中显示对应数据 实现方法: //dataSet 转 dataTable 1.生成datatable,并为combox绑定数据源: comboBox1.DataSource = dt1; comboBox1.DisplayMember = "用户编码"; comboBox1.ValueMember = "ID"; this.comboBox1.SelectedIndex = -1; 2.在combox的Se

Pentaho6.1中D3可视化库的集成及数据联动的实现

1.软件环境 操作系统版本:Win 10 64位 可视化图形库:D3 Pentaho版本: biserver-ce-6.1.0.1-196 2.对D3的简单介绍 D3允许你将任意的数据绑定到文档对象模型(DOM),然后运用数据驱动转换到文档上.例如,你可以使用D3将一个数组生成一个HTML表格.或者,使用相同的数据来创建一个有平滑过渡和交互的交互式SVG条形图. D3不是一个旨在提供每一个可能想到的功能的单一框架.相反的,D3所解决的问题的关键是:高效操作基于数据的文档.它提供了显著的灵活性,展

最讨厌多个select之间的数据联动

今天,接到一个需求. 需求如下:要统计用户用支付宝或者微信付款的总金额和统计用户用支付宝或者微信充值的总金额...然后数据显示页面的地方,有三个select,一个是数据的类型,有购买和充值两种类型:一个是方式的类型,有支付宝,微信:一个是状态,有确认,未确认和取消.触发select的时候,支付宝或者微信付款的总金额和统计用户用支付宝或者微信充值的总金额也要随之改变. 这个是要做多少判断...多次触发ajax请求,拉多少数据.. 1.三个select全选,只需要返回一种数据,支付宝购买总金额或者是