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

ASP.NET 從數據庫獲取當前登錄用戶信息並用 GridView 顯示修改

     編輯:程式設計疑難解答

核心流程

  1. 登錄驗證:SELECT * FROM Users WHERE username=@u AND pwd=@p,通過則 Session["uid"] = userId。
  2. 頁面加載:uid = (int)Session["uid"],SELECT * FROM Users WHERE id=@uid 綁定 GridView。
  3. GridView 編輯:啟用 AutoGenerateEditButton,RowEditing/RowUpdating/RowCancelingEdit 事件中執行 UPDATE,重新綁定。
  4. 權限攔截:RowUpdating 前再次比對 Session["uid"] 與數據行 id,防止越權修改。

關鍵代碼

// 登錄
Session["uid"] = reader["id"];

// 頁面加載
if (!IsPostBack) BindGrid();

void BindGrid() {
    int uid = (int)Session["uid"];
    using (var da = new SqlDataAdapter("SELECT * FROM Users WHERE id=@uid", conn)) {
        da.SelectCommand.Parameters.AddWithValue("@uid", uid);
        var dt = new DataTable();
        da.Fill(dt);
        gv.DataSource = dt; gv.DataBind();
    }
}

// 更新
protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e) {
    int uid = (int)Session["uid"];
    string email = (string)e.NewValues["email"];
    using (var cmd = new SqlCommand("UPDATE Users SET email=@e WHERE id=@uid", conn)) {
        cmd.Parameters.AddWithValue("@e", email);
        cmd.Parameters.AddWithValue("@uid", uid);
        conn.Open(); cmd.ExecuteNonQuery();
    }
    gv.EditIndex = -1; BindGrid();
}

安全提示

  • 密碼存**哈希 (BCrypt/Argon2)**,不可明文。
  • 所有 SQL 參數化,防注入。
  • 敏感操作加 ValidateAntiForgeryToken。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved