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