三個 DropDownList 實現「學院 → 系部 → 班級」三級聯動,數據分別來自四張表(原問題說四表,實際邏輯三表)。
string strSQL = "select XueYuanName from XueYuan select XiBuName from XiBu select ClassName from Class";
此處將三條獨立 SELECT 語句直接拼接,缺少分號分隔,且 SqlDataReader 僅能讀取第一個結果集,導致後續數據丟失。
SelectedIndexChanged 事件中,根據選中的學院 ID 查詢對應系部;同理系部選中後查詢班級。// Page_Load 僅加載學院
if (!IsPostBack) {
BindXueYuan();
}
void BindXueYuan() {
string sql = "SELECT XueYuanID, XueYuanName FROM XueYuan";
// 執行查詢,綁定 drdlXY,插入「請選擇」項
}
// 學院改變事件
protected void drdlXY_SelectedIndexChanged(object sender, EventArgs e) {
string xyId = drdlXY.SelectedValue;
string sql = "SELECT XiBuID, XiBuName FROM XiBu WHERE XueYuanID = @xyId";
// 參數化查詢,綁定 drdlXB
}
// 系部改變事件類似,查詢班級表
AutoPostBack="true" 觸發級聯。DataTextField、DataValueField 正確綁定顯示值與實際值。SqlConnection、SqlDataReader 釋放資源。