首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET WebForms 三級聯動下拉框:從多表加載數據的正確姿勢

     編輯:程式設計綜合問答

業務場景

三個 DropDownList 實現「學院 → 系部 → 班級」三級聯動,數據分別來自四張表(原問題說四表,實際邏輯三表)。

原代碼核心缺陷

string strSQL = "select XueYuanName from XueYuan select XiBuName from XiBu select ClassName from Class";

此處將三條獨立 SELECT 語句直接拼接,缺少分號分隔,且 SqlDataReader 僅能讀取第一個結果集,導致後續數據丟失。

正確方案:分步查詢 + 聯表關聯

  1. 首次加載:僅查詢學院表,綁定第一個下拉框。
  2. 級聯事件:在 SelectedIndexChanged 事件中,根據選中的學院 ID 查詢對應系部;同理系部選中後查詢班級。
  3. 參數化查詢:防止 SQL 注入,提升性能。

關鍵代碼示例

// 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 釋放資源。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved