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

ASP.NET 新手教學:使用 GridView 顯示特定商家的商品資料

     編輯:程式設計綜合問答

問題背景

許多 ASP.NET 初學者在建立電商網站時,都會遇到這樣的需求:商家登入後,點擊連結進入 myshop.aspx 頁面,頁面上需顯示該商家發布的所有商品。資料庫中商品表包含「ID、商品名、商品價格、商品數量、主人」等欄位,其中 ID 為主鍵。使用者名稱已透過 Response.Redirect 傳遞至目標頁面,現在需要根據「主人」欄位篩選資料,並綁定至 GridView 控制項顯示。

解決方案步驟

1. 取得傳遞的使用者名稱

在 myshop.aspx.cs 的 Page_Load 事件中,從 QueryString 取得商家帳號:

string owner = Request.QueryString["username"]; // 假設傳遞參數名為 username
if (string.IsNullOrEmpty(owner)) {
    Response.Redirect("login.aspx"); // 未傳遞參數則導回登入頁
    return;
}

2. 撰寫參數化 SQL 查詢

為防止 SQL 注入,務必使用參數化查詢:

string sql = "SELECT ID, 商品名, 商品價格, 商品數量 FROM 商品表 WHERE 主人 = @owner";

3. 執行查詢並綁定 GridView

完整程式碼範例:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string owner = Request.QueryString["username"];
        if (string.IsNullOrEmpty(owner)) return;

        string connStr = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            string sql = "SELECT ID, 商品名, 商品價格, 商品數量 FROM 商品表 WHERE 主人 = @owner";
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                cmd.Parameters.AddWithValue("@owner", owner);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
    }
}

進階提示

  • 若商品數量龐大,建議啟用 GridView 分頁功能(AllowPaging="true")並處理 PageIndexChanging 事件。
  • 可加入「編輯/刪除」按鈕欄位,配合 RowEditing、RowDeleting 事件實現商品管理。
  • 生產環境請考慮使用 Entity Framework 或 Dapper 等 ORM 框架,提升開發效率與安全性。

常見錯誤避坑

  1. 直接字串拼接 SQL 導致注入風險。
  2. 忘記在 !IsPostBack 判斷中綁定資料,造成 PostBack 時重複查詢。
  3. GridView 未設定 DataKeyNames="ID",導致後續編輯/刪除無法正確取得主鍵值。

掌握上述核心步驟,即可快速實現「商家專屬商品列表」功能,為電商後台打下堅實基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved