Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Lỗi : tự động gởi lại dữ liệu khi ấn F5

  1. #1
    Ngày gia nhập
    04 2010
    Bài viết
    51

    Post Lỗi : tự động gởi lại dữ liệu khi ấn F5

    Mình thêm 1 mặt hàng vào CSDL (mã phát sinh tự động).
    khi mình ấn F5 thì nó tự động thêm 1 cái giống hệt như vậy. Vì là mã tự phát sinh nên nó cứ insert đại càng vào CSDL.
    Mọi người giúp mình khắc phục tình trạng này với.
    Vẫn kiêu hãnh ngẩn đầu kiêu ngạo,
    Vẫn cuối đầu tự nhủ phải cố lên.
    Trên trời cao tôi là vì sao lẽ,
    Dưới mặt đất tôi là kẻ cô đơn.
    Nỗi buồn ơi nếu mày là vật chất,
    Thì tao là kẻ giàu nhất thế gian.

  2. #2
    Ngày gia nhập
    05 2010
    Bài viết
    505

    Trong sự kiện Page_Load bạn khai báo thêm 1 session như sau:
    Visual C# Code:
    1. if(!IsPostBack)
    2.             {
    3.                 Session["update"] =  Server.UrlEncode(System.DateTime.Now.ToString());
    4.             }

    tạo thêm sự kiện Page_PreRende
    Visual C# Code:
    1. void Page_PreRender(object obj,EventArgs e)
    2.     {
    3.         ViewState["update"] = Session["update"];
    4.     }
    Khi xử lý insert (ví dụ click button)
    Visual C# Code:
    1. if (Session["update"].ToString() == ViewState["update"].ToString())
    2. {
    3.    //ok, insert vào data
    4. }
    5. {
    6.    //ko insert do nhấn F5
    7. }

  3. #3
    Ngày gia nhập
    04 2010
    Bài viết
    51

    Vẫn vậy bạn ơi :(
    Code trang đó của mình đây cậu xem lại thử :(
    ketnoidulieu con = new ketnoidulieu();
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    string sql;
    string Ma1;
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
    con.ketnoi();
    Ma1 = con.MaHang(); //cái này mình lấy mã tự động
    sql = "insert into MatHang values('" + Ma1 + "','" + txtTen.Text + "','" + filePath + "','" + cmbSize.Text + "'," + int.Parse(txtSL.Text) + "," + int.Parse(txtDG.Text) + ",'" + txtNote.Text + "','" + DateTime.Now.ToString() + "')";
    con.thucthi(sql);
    con.ngatketnoi();
    Label1.Text = "Cập nhập dữ liệu thành công";
    GridView1.DataBind();
    }
    khi mình ấn F5 thì hành động này đc thực thi lên 1 lần nữa
    Vẫn kiêu hãnh ngẩn đầu kiêu ngạo,
    Vẫn cuối đầu tự nhủ phải cố lên.
    Trên trời cao tôi là vì sao lẽ,
    Dưới mặt đất tôi là kẻ cô đơn.
    Nỗi buồn ơi nếu mày là vật chất,
    Thì tao là kẻ giàu nhất thế gian.

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    505

    vẫn vậy là như thế nào, code bạn đưa ra có thấy sử dụng đoạn code mình gợi ý đâu mà nó khác đc

  5. #5
    Ngày gia nhập
    12 2011
    Bài viết
    21

    Bạn có thể xử lý như thế này:
    - Sau khi update xong (nếu bạn vẫn muốn ở lại luôn trang đó), mà muốn nhấn F5 không update nữa, thì viết
    Code:
    Response.Redirect("TrangHienTai.aspx");
    Chúc bạn thành công!

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    258

    Mặc định Lỗi : tự động gởi lại dữ liệu khi ấn F5

    Trích dẫn Nguyên bản được gửi bởi MrViet Xem bài viết
    Vẫn vậy bạn ơi :(
    Code trang đó của mình đây cậu xem lại thử :(

    khi mình ấn F5 thì hành động này đc thực thi lên 1 lần nữa
    Đơn giản là sau khi cập nhật xong thì bạn gán trường txtTen.Text ="" , sau đó mỗi lần insert thì bạn kiểm tra xem nếu độ dài của txtTen.Text lớn hơn 0 thì mới insert. Vậy là ok
    Anh yêu em hí hí

  7. #7
    Ngày gia nhập
    08 2010
    Bài viết
    125

    bạn phải viết Response.Redirect("tranghientai.aspx",true); true ở đây là hủy tất cả những event button mà thuộc dạng submit đã đc kích hoạt trước đó là ok. Viết vào trong phần sự kiện click của button Insert nhé, vào trong phần insert thành công ấy. Vì nếu để ở cuối cùng của cái sự kiện nó sẽ load lịa trang làm mất đi những câu báo lỗi khác

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn