許多 ASP.NET 初學者在建立電商網站時,都會遇到這樣的需求:商家登入後,點擊連結進入 myshop.aspx 頁面,頁面上需顯示該商家發布的所有商品。資料庫中商品表包含「ID、商品名、商品價格、商品數量、主人」等欄位,其中 ID 為主鍵。使用者名稱已透過 Response.Redirect 傳遞至目標頁面,現在需要根據「主人」欄位篩選資料,並綁定至 GridView 控制項顯示。
在 myshop.aspx.cs 的 Page_Load 事件中,從 QueryString 取得商家帳號:
string owner = Request.QueryString["username"]; // 假設傳遞參數名為 username
if (string.IsNullOrEmpty(owner)) {
Response.Redirect("login.aspx"); // 未傳遞參數則導回登入頁
return;
}
為防止 SQL 注入,務必使用參數化查詢:
string sql = "SELECT ID, 商品名, 商品價格, 商品數量 FROM 商品表 WHERE 主人 = @owner";
完整程式碼範例:
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();
}
}
}
}
AllowPaging="true")並處理 PageIndexChanging 事件。RowEditing、RowDeleting 事件實現商品管理。!IsPostBack 判斷中綁定資料,造成 PostBack 時重複查詢。DataKeyNames="ID",導致後續編輯/刪除無法正確取得主鍵值。掌握上述核心步驟,即可快速實現「商家專屬商品列表」功能,為電商後台打下堅實基礎。