public void addtocart(string bookid)
{
SqlConnection conn = new SqlConnection("server=localhost;database=book;uid=aaa;pwd=123456");
String sql = "select * from book where bookid='" + bookid + "'";
SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
DataTable dt;
adp.Fill(ds, "book");
dt = ds.Tables["book"];
DataRow dr = cart.NewRow();
dr[0] = dt.Rows[0]["bookid"];
dr[1] = dt.Rows[0]["bookname"];
dr[2] = dt.Rows[0]["price"];
for (int i = 0; i <= cart.Rows.Count - 1; i++)
{
if (cart.Rows[i][0].ToString() == bookid)
{
dr[3] = int.Parse(dr[3].ToString()) + 1;
} else
{
dr[3] = 1;
}
}
dr[4] = Double.Parse(dr[2].ToString()) * int.Parse(dr[3].ToString());
cart.Rows.Add(dr);
}
这是购物车其中一部分代码,dr[3]表示的是购买数量。它的初始值为1, 当用户选择的商品已经在datatable中,也就是购物车时,会自动加1。但是当执行到 dr[4] = Double.Parse(dr[2].ToString()) * int.Parse(dr[3].ToString());这句时就会出错,提示输入的字符串格式有问题。我想应该是dr[3]没有获得值,请大家帮忙看一下到底是哪儿错了,还需要什么改进?
{
SqlConnection conn = new SqlConnection("server=localhost;database=book;uid=aaa;pwd=123456");
String sql = "select * from book where bookid='" + bookid + "'";
SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
DataTable dt;
adp.Fill(ds, "book");
dt = ds.Tables["book"];
DataRow dr = cart.NewRow();
dr[0] = dt.Rows[0]["bookid"];
dr[1] = dt.Rows[0]["bookname"];
dr[2] = dt.Rows[0]["price"];
for (int i = 0; i <= cart.Rows.Count - 1; i++)
{
if (cart.Rows[i][0].ToString() == bookid)
{
dr[3] = int.Parse(dr[3].ToString()) + 1;
} else
{
dr[3] = 1;
}
}
dr[4] = Double.Parse(dr[2].ToString()) * int.Parse(dr[3].ToString());
cart.Rows.Add(dr);
}
这是购物车其中一部分代码,dr[3]表示的是购买数量。它的初始值为1, 当用户选择的商品已经在datatable中,也就是购物车时,会自动加1。但是当执行到 dr[4] = Double.Parse(dr[2].ToString()) * int.Parse(dr[3].ToString());这句时就会出错,提示输入的字符串格式有问题。我想应该是dr[3]没有获得值,请大家帮忙看一下到底是哪儿错了,还需要什么改进?
{
dr[3] = int.Parse(dr[3].ToString()) + 1;
} 跟一下看if语句能不能进去?是不是都到了else了?
if (cart.Rows[i][0].ToString() == bookid&&dr[3]。ToString()!=“”)
{
dr[3] = int.Parse(dr[3].ToString()) + 1;
}
只能想到这么多了,帮你顶。
dr[4] = Double.Parse(dr[2].ToString()) * Double.Parse(dr[3].ToString());