关于用代码删除datagrid中绑定数据表中的数据
新手 做一个购物车 一个结算清理的页面 点击删除指定的数据 但老是最后条删除不了 清空购物车也一样 检查数据库还剩下一条数据 搞不懂 希望高手帮忙看看
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
public partial class AddToCart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["count"] = count.Text;
if (!IsPostBack)
{
if (Session["username"] == null)
{
Response.Write("<script language=javascript>alert('请先登录');location.href='index.aspx';</script>");
}
//接受传送数据
else
{
DVBind();
this.Label2.Visible = false;
TotalMoney();
}
}
}
//绑定商品信息
public void DVBind()
{
string str = System.Configuration.ConfigurationManager.AppSettings["connstring"].ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = str;
conn.Open();
// 开始没有取值 从inder.aspx
string id;
id = Request.QueryString["bookid"].ToString();
string sql = "select bookid,bookname,price from book where bookid=" + id;
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
dr.Dispose();
//存入表
string sqlinsert = "insert into Orders(username,bookid,bookname,price) values('" + Session["username"].ToString() + "','" + dt.Rows[0][0] + "','" + dt.Rows[0][1] + "'," + dt.Rows[0][2] + " )";
SqlCommand cmd2 = new SqlCommand(sqlinsert, conn);
dr = cmd2.ExecuteReader();
dr.Dispose();
//检索数据 资源要释放
string sql1 = "select * from Orders where username='"+Session["username"]+"'";
SqlDataAdapter da = new SqlDataAdapter(sql1,conn);
DataSet ds = new DataSet();
da.Fill(ds);
//逐行提取数据
double sum = 0;
foreach (DataRow theRow in ds.Tables[0].Rows)
{
sum += (Convert.ToInt32(theRow["number"]) * Convert.ToInt32(theRow["price"]));
}
this.count.Text = sum.ToString();
GridView1.DataSource = ds; //[0].DefaultView
GridView1.DataBind();
cmd.Dispose();
conn.Close();
}
//清空商品信息函数
public void DeleteAllInfo()
{
string str = System.Configuration.ConfigurationManager.AppSettings["connstring"].ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = str;
conn.Open();
string id;
id = Request.QueryString["bookid"].ToString();
string sql = "delete from Orders where username='"+Session["username"]+"'";
SqlCommand cmd = new SqlCommand(sql, conn);
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
if (i > 1)
{
Response.Write("清空成功!");
}
cmd.ExecuteNonQuery();
this.GridView1.DataSource = null;
this.GridView1.Visible = false;
cmd.Dispose();
conn.Close();
}
//删除指定商品的信息
public void DeleteGoods(string OrdersID)
{
string str = System.Configuration.ConfigurationManager.AppSettings["connstring"].ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = str;
conn.Open();
string id = OrdersID;
id = Request.QueryString["bookid"].ToString();
string sql = "delete from Orders where bookid=" + id;
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
}
public decimal price;
public int num;
public static decimal sum;
public void TotalMoney()
{
string str = System.Configuration.ConfigurationManager.AppSettings["connstring"].ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = str;
conn.Open();
string id;
id = Request.QueryString["bookid"].ToString();
sum = 0;
string sql = "select price,number from Orders where bookid=" + id;
SqlCommand cmd = new SqlCommand(sql,conn);
SqlDataReader rd = cmd.ExecuteReader();
rd.Close();
cmd.Dispose();
conn.Close();
}
protected void LinkButton3_Click(object sender, EventArgs e)
{
DeleteAllInfo();
this.Label2.Visible = true;
DVBind();
this.count.Text= "0";
}
protected void LinkButton2_Click(object sender, EventArgs e)
{
Response.Redirect("index.aspx");
}
protected void LinkButton4_Click(object sender, EventArgs e)
{
Response.Redirect("Check.aspx");
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string oID = (GridView1.DataKeys[e.RowIndex].Value).ToString();
DeleteGoods(oID);
TotalMoney();
DVBind();
}
//当页码改变时,重新绑定商品信息
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
DVBind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
DVBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string str = System.Configuration.ConfigurationManager.AppSettings["connstring"].ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = str;
conn.Open();
string id;
id = Request.QueryString["bookid"].ToString();
//数量在第五行
string GoodsNum =(((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString());
if (IsValidNum(GoodsNum))
{
string sql = "update Orders set number=" + GoodsNum + "where bookid=" + id;
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
GridView1.EditIndex = -1;
DVBind();
TotalMoney();
}
else
{
GridView1.EditIndex = -1;
DVBind();
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
DVBind();
TotalMoney();
}
//判断修改的数据是否为有效的数据
public bool IsValidNum(string num)
{
return Regex.IsMatch(num, @"^\+?[1-9][0-9]*$");
}
}