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