Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 3 123 CuốiCuối
Kết quả 1 đến 10 của 23
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Trang giỏ hàng tự thêm số lượng khi refesh, sửa như thế nào?

    Khi mình refesh lại trang thì cột số lượng tự đông tăng.
    Bạn nào thấy sai chổ nào sửa dùm mình với.

    Test tại đây: http://dochoitreem.somee.com/
    acc: test
    pass: 123

    Mã:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["TenDN"] == null)
                    Response.Redirect("~/Dangnhap.aspx");
                if (Request.QueryString["MADC"] != null)
                {
                    int MADC = int.Parse(Request.QueryString["MADC"]);
                    DataTable dt = XLDL.Docbang("Select TENDC,DONGIA From DOCHOI where MADC= '" + MADC + "'");
                    String TENDC = dt.Rows[0][0].ToString();
                    int DONGIA = int.Parse(dt.Rows[0][1].ToString());
                    int SOLUONG = 1;
                    //lbTenDN.Text = Session["TenDN"].ToString();
                    ThemVaoGioHang(MADC, TENDC, DONGIA, SOLUONG);
                }
                if (Session["Giohang"] != null)
                {
                    DataTable dt = new DataTable();
                    dt = (DataTable)Session["GioHang"];
                    if (dt.Rows.Count == 0)
                    {
                        Response.Redirect("~/Default.aspx");
                    }
                    else
                    {
                        System.Decimal tongThanhTien = 0;
                        foreach (DataRow r in dt.Rows)
                        {
                            r["THANHTIEN"] = Convert.ToInt32(r["SOLUONG"]) * Convert.ToDecimal(r["DONGIA"]);
                            tongThanhTien += Convert.ToDecimal(r["THANHTIEN"]);
                            lbTongThanhTien.Text = tongThanhTien.ToString();
                        }
                        GridView1.DataSource = dt;
                        GridView1.DataBind();
                    }
                }
            }
        }
        protected void bTieptuc_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Default.aspx");
        }
        protected void bXoagiohang_Click(object sender, EventArgs e)
        {
            Session["Giohang"] = null;
            Response.Redirect("~/Default.aspx");
        }
        protected void bCapnhat_Click(object sender, EventArgs e)
        {
            DataTable dt = (DataTable)Session["GioHang"];
            foreach (GridViewRow r in GridView1.Rows)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    if (Convert.ToString(GridView1.DataKeys[r.DataItemIndex].Value) == dr["MADC"].ToString())
                    {
                        TextBox t = (TextBox)r.Cells[2].FindControl("txtSoluong");
    
                        if (Convert.ToInt32(t.Text) <= 0)
                            dt.Rows.Remove(dr);
                        else
                            dr["SOLUONG"] = t.Text;
                        break;
                    }
                }
            }
            Session["Giohang"] = dt;
            Response.Redirect("~/GioHang.aspx");
        }
        protected void bThanhtoan_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Thanhtoan.aspx");
        }
        public void ThemVaoGioHang(int MADC, string TENDC, int DONGIA, int SOLUONG)
        {
            DataTable datatable;
            if (Session["GioHang"] == null)
            {
                datatable = new DataTable();
                datatable.Columns.Add("MADC");
                datatable.Columns.Add("TENDC");
                datatable.Columns.Add("DONGIA");
                datatable.Columns.Add("SOLUONG");
                datatable.Columns.Add("THANHTIEN");
            }
            else
                datatable = (DataTable)Session["GioHang"];
            int dong = SPdacotronggiohang(MADC, datatable);
            if (dong != -1)
            {
                datatable.Rows[dong]["SOLUONG"] = Convert.ToInt32(datatable.Rows[dong]["SOLUONG"]) + SOLUONG;
            }
            else
            {
                DataRow dr = datatable.NewRow();
                dr["MADC"] = MADC;
                dr["TENDC"] = TENDC;
                dr["DONGIA"] = DONGIA;
                dr["SOLUONG"] = SOLUONG;
                dr["THANHTIEN"] = DONGIA * SOLUONG;
                datatable.Rows.Add(dr);
            }
            Session["GioHang"] = datatable;
        }
        public static int SPdacotronggiohang(int MADC, DataTable datatable)
        {
            int dong = -1;
            for (int i = 0; i < datatable.Rows.Count; i++)
            {
                if (int.Parse(datatable.Rows[i]["MADC"].ToString()) == MADC)
                {
                    dong = i;
                    break;
                }
            }
            return dong;
        }
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Nutxoa")
            {
                int chiso = int.Parse(e.CommandArgument.ToString());
                try
                {
                    DataTable dt = (DataTable)Session["GioHang"];
                    dt.Rows.RemoveAt(chiso);
                    Session["Giohang"] = dt;
                    Response.Redirect("~/Giohang.aspx");
                }
                catch
                {
                    Response.Redirect("~/Giohang.aspx");
                }
            }
        }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn sử dụng QueryString trên URL để mà đưa sản phẩm vào Giỏ hàng cho nên mỗi lần bạn Refresh lại thì nó vẫn là cái URL đó, cho nên nó tiếp tục chọn ra hàng theo mã số đó và gọi ThemVaoGioHang => Số lượng hàng trong giỏ tăng lên 1.

    Bạn nên xử lý việc thêm vào giỏ hàng ngay trong trang hiển thị chi tiết sản phẩm để tránh việc Refresh lại trang thì tăng lên 1 như thế này

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Nếu bạn làm như vậy thì code xử lý việc thêm sản phẩm vào giỏ hàng bạn thực hiện gọi ở sự kiện page_load đúng ko
    vậy bạn làm như sau:
    trong sự kiện Page_Load code:
    if(!IsPostback==false)
    {
    code xử lý phần đó bạn để trong này.
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn nên chú ý phần xử lý đăng nhập phần quản trị cho dù khách hàng có biết Url quản trị thì cũng ko thể vào đc có vào thì cũng Redirect đén trang Default cho người dùng. và khi kiểm tra đăng nhập vào quản trị bạn nên truyền theo parametter để tránh việc đăng nhập thế này cũng vào đc: abc' or 1=1--
    bạn thử xem vẫn vào binhthuwongfg đúng ko? ko cần mật khẩu gì hết [IMG]images/smilies/smile.png[/IMG]) thông cảm nhé! hihi

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    nên viết 1 lớp lọc các ký tự đặc biệt và các thẻ html trước khi tương tác với database

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi pvtam2a
    bạn nên chú ý phần xử lý đăng nhập phần quản trị cho dù khách hàng có biết Url quản trị thì cũng ko thể vào đc có vào thì cũng Redirect đén trang Default cho người dùng. và khi kiểm tra đăng nhập vào quản trị bạn nên truyền theo parametter để tránh việc đăng nhập thế này cũng vào đc: abc' or 1=1--
    bạn thử xem vẫn vào binhthuwongfg đúng ko? ko cần mật khẩu gì hết [IMG]images/smilies/smile.png[/IMG]) thông cảm nhé! hihi
    bạn cũng có thể viết 1 lớp lọc các ký tự đặc biệt và các thẻ html trước khi tương tác với database

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Theo mình làm theo cách bạn cũng đc, nhưng như mình thì phần hiển thị mình thường dùng datalist để hiển thị sản phẩm cần bán đúng ko? khi bấm chọn mua thì mình thực hiện việc thêm sản phẩm vào giỏ hàng ngay tại trang đó viết trong sự kiện Rowcommand gì của datalist đó, có thể thực hiện xong mình redirect đến trang giỏ hàng. cho họ xem giỏ hàng trên giao diện mình nên để 1 phần hiển thị thông tin giỏ hàng như số lượng + tổng tiền để ở site nào của web khách hàng cũng có thể biết được thông tin giỏ hàng của mình. thân!

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    code của bạn chạy ổn đâu có gì đâu! mỗi lần Refresh nó +1 là đúng rồi. à mà cái calender sao ko cho nó ẩn với người dùng mà để vậy ko đẹp cho mấy,

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi pvtam2a
    Theo mình làm theo cách bạn cũng đc, nhưng như mình thì phần hiển thị mình thường dùng datalist để hiển thị sản phẩm cần bán đúng ko? khi bấm chọn mua thì mình thực hiện việc thêm sản phẩm vào giỏ hàng ngay tại trang đó viết trong sự kiện Rowcommand gì của datalist đó, có thể thực hiện xong mình redirect đến trang giỏ hàng. cho họ xem giỏ hàng trên giao diện mình nên để 1 phần hiển thị thông tin giỏ hàng như số lượng + tổng tiền để ở site nào của web khách hàng cũng có thể biết được thông tin giỏ hàng của mình. thân!
    Mình tính làm như thế thêm vào giỏ hàng trc khi qua giỏ hàng, nhưng mình k biết làm sao để lấy masp của nó trên datalist, mình dùng imagesbutton để thực hiện. Bạn giúp với
    Trích dẫn Gửi bởi jindoniit
    bạn cũng có thể viết 1 lớp lọc các ký tự đặc biệt và các thẻ html trước khi tương tác với database
    Bạn cho mình code được không. Mình không biết vụ này.
    Trích dẫn Gửi bởi pvtam2a
    bạn nên chú ý phần xử lý đăng nhập phần quản trị cho dù khách hàng có biết Url quản trị thì cũng ko thể vào đc có vào thì cũng Redirect đén trang Default cho người dùng. và khi kiểm tra đăng nhập vào quản trị bạn nên truyền theo parametter để tránh việc đăng nhập thế này cũng vào đc: abc' or 1=1--
    bạn thử xem vẫn vào binhthuwongfg đúng ko? ko cần mật khẩu gì hết [IMG]images/smilies/smile.png[/IMG]) thông cảm nhé! hihi
    Mình k hiểu ý của bạn nói là sao hết.nói rõ dc không.

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi pvtam2a
    Nếu bạn làm như vậy thì code xử lý việc thêm sản phẩm vào giỏ hàng bạn thực hiện gọi ở sự kiện page_load đúng ko
    vậy bạn làm như sau:
    trong sự kiện Page_Load code:
    if(!IsPostback==false)
    {
    code xử lý phần đó bạn để trong này.
    }
    Không dc bạn ơi, như vậy thì có truyền dc sản phẩm vào giỏ hàng.

 

 
Trang 1 của 3 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •