你的位置:首页 > ASP.net教程

[ASP.net教程]实现两级下拉框的联动


1.实现两级下拉框的联动。

  功能:实现点击年级下拉框,加载对应科目的下拉框。

第一步:首先要加载年级下拉框中的数据。

01.在GradeDAL层(数据访问层)写一个方法,查询所有年级的信息。

/// <summary>    /// 从数据库中获取年级信息    /// </summary>    /// <returns>List的集合:年级编号,年级名称</returns>    public List<Grade> SelectGradeInfo()    {      List<Grade> list = new List<Grade>();      string sql = "select * from Grade";      DataTable dt= SQLHelper.ExecuteDataTable(sql);      foreach (DataRow item in dt.Rows)      {        //一个item代表一个行对象        Grade grade = new Grade();        grade.GradeId = Convert.ToInt32(item["GradeID"]);        grade.GradeName=item["GradeName"].ToString();        list.Add(grade);      }      return list;    }

02.在GradeBLL层(业务逻辑层)调用数据访问层的方法,返回给UI层来调用。

 public class GradeBLL  {    GradeDAl gd = new GradeDAl();     /// <summary>    /// 从数据库中获取年级信息    /// </summary>    /// <returns>List的集合:年级编号,年级名称</returns>    public List<Grade> SelectGradeInfo()    {      return gd.SelectGradeInfo();    }    }

03.在UI层(表示层)调用GradeBLL层的方法,用List<Grade>类型接收,绑定到下拉框中,实现年级下拉框的绑定。

//加载年级下拉框方法,在Load事件做调用    public void Loadingcbograde()    {      //调用BLL层的方法,用list集合接收      List<Grade> list = gb.SelectGradeInfo();      //绑定显示值。      cbograde.DisplayMember = "gradename";      //绑定隐藏值。      cbograde.ValueMember = "gradeid";      //绑定数据源      cbograde.DataSource = list;    }

第二步:在年级下拉框中的SelectedIndexChanged(属性值更改时触发的事件)通过调用BLL层的方法来加载该年级下对应的科目信息。

01.在SubjectDAL层写一个方法,根据选择的年级获取该年级的隐藏值(也就是年级编号)来查询该年级的科目信息,返回一个subject对象的集合。

 

 /// <summary>    /// 根据选中的年级编号查询该年级下的科目    /// </summary>    /// <returns>科目对象集合</returns>    public List<Subject> SelectSubjectInfos(int id)    {      //根据年级编号查询科目信息      string sql = "select subjectid,subjectname from subject where gradeid=@gradeid";      SqlParameter sp = new SqlParameter("@gradeid", id);      DataTable dt = SQLHelper.ExecuteDataTable(sql,sp);      List<Subject> list = new List<Subject>();      foreach (DataRow item in dt.Rows)      {        Subject subject = new Subject();        subject.SubjectId = Convert.ToInt32(item["Subjectid"]);        subject.SubjectName = item["Subjectname"].ToString();        list.Add(subject);      }      return list;    }

02.在SubjectBLL层调用数据访问层的方法,返回给UI层来调用。

  /// <summary>    /// 根据选中的年级编号查询该年级下的科目    /// </summary>    /// <returns>科目对象集合</returns>    public List<Subject> SelectSubjectInfos(int id)    {      return sd.SelectSubjectInfos(id);    }

03.在年级下拉框中的SelectedIndexChanged(属性值更改时触发的事件)调用SubjectBLL层的方法

 //实例化SubjectBLL    SubjectBLL sb = new SubjectBLL();    //年级下拉框属性更改值触发的事件    private void cbograde_SelectedIndexChanged(object sender, EventArgs e)    {      //获取年级编号        int id= Convert.ToInt32(cbograde.SelectedValue);      //调用BLL层的方法用Subject类型的集合接收      List<Subject> list= sb.SelectSubjectInfos(id);      //在科目下来框中添加一项全部。      list.Insert(0, new Subject {SubjectId=-1, SubjectName="全部" });      //清空下拉框数据      cbosubject.DataSource = null;      //绑定显示值      cbosubject.DisplayMember = "subjectname";      //绑定隐藏值      cbosubject.ValueMember = "subjectid";      //绑定数据源      cbosubject.DataSource = list;    }