歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

實現兩級下拉框的聯動

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;
        }

Copyright © Linux教程網 All Rights Reserved