我有一个工作正常的购物车但是如果用户没有下订单,那么在退出后购物车项目不会停留。所以任何人都可以帮助如何让购物车商品保留至少1天。我没有使用任何数据库,这里有我想做的事情:
if (!IsPostBack)
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add("sno");
dt.Columns.Add("Game_Name");
dt.Columns.Add("Platform");
dt.Columns.Add("Price");
dt.Columns.Add("Quantity");
dt.Columns.Add("Image");
dt.Columns.Add("cost");
dt.Columns.Add("totalcost");
//BindGridView();
if (Request.QueryString["Game_ID"] != null)
{
if (Session["Buyitems"] == null)
{
dr = dt.NewRow();
String mycon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True";
SqlConnection scon = new SqlConnection(mycon);
String myquery = "select * from Game where Game_ID=" + Request.QueryString["Game_ID"];
SqlCommand cmd = new SqlCommand();
cmd.CommandText = myquery;
cmd.Connection = scon;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
dr["sno"] = 1;
dr["Game_Name"] = ds.Tables[0].Rows[0]["Game_Name"].ToString();
dr["Platform"] = ds.Tables[0].Rows[0]["Platform"].ToString();
dr["Image"] = ds.Tables[0].Rows[0]["Image"].ToString();
dr["Price"] = ds.Tables[0].Rows[0]["Price"].ToString();
dr["Quantity"] = ds.Tables[0].Rows[0]["Quantity"].ToString();
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
Session["buyitems"] = dt;
}
else
{
dt = (DataTable)Session["buyitems"];
int sr;
sr = dt.Rows.Count;
dr = dt.NewRow();
String mycon = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True";
SqlConnection scon = new SqlConnection(mycon);
String myquery = "select * from Game where Game_ID=" + Request.QueryString["Game_ID"];
SqlCommand cmd = new SqlCommand();
cmd.CommandText = myquery;
cmd.Connection = scon;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
dr["sno"] = sr + 1;
dr["Game_Name"] = ds.Tables[0].Rows[0]["Game_Name"].ToString();
dr["Platform"] = ds.Tables[0].Rows[0]["Platform"].ToString();
dr["Image"] = ds.Tables[0].Rows[0]["Image"].ToString();
dr["Price"] = ds.Tables[0].Rows[0]["Price"].ToString();
dr["Quantity"] = ds.Tables[0].Rows[0]["Quantity"].ToString();
dt.Rows.Add(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
Session["buyitems"] = dt;
}
}
else
{
dt = (DataTable)Session["buyitems"];
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
我使用命令参数从前一页获取每个游戏的ID。
答案 0 :(得分:0)
如果您存储在Cookie中,请将它们设置为在24小时后过期。 您可以维护购物车添加时间并通过作业将其删除,也可以在检查时手动删除,并在从数据库中提取项目时删除。
答案 1 :(得分:0)
使用Cookie保存购物车以供日后使用。如果用户即使没有登录也会将商品添加到卡中,这是一个选项。
public void SaveCart2Cookie(List<string> items)
{
string cartList = string.Join(",", items);
if (Request.Cookies["CartCookie"] == null)
Response.Cookies["CartCookie"].Value = cartList;
else
{
Create new Cart Cookie
}
Response.Cookies["CartCookie"].Expires = DateTime.Now.AddHours(24);
}
答案 2 :(得分:0)
您可以使用Cookie,或者如果您使用现代浏览器定位用户,也可以使用Web Storage API
,您必须使用客户端代码进行控制。
我建议您在问题中添加一些代码,以便我们提供更好的答案。