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層的方法
//實例化SubjectBLLSubjectBLL 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;}
?
???????