谁能帮我看下.NET购物车的代码
谁能帮我看看这代码那里有问题,提示说是输入字符串有问题,读不出购物车,哪位帮我看看,我刚注册的分不是很多
if(!IsPostBack)
{
if (Session["ShopCart"] == null)
{
this.LinkCheck.Visible = false;
this.LinkClear.Visible = false;
this.LinkContinue.Visible = false;
}
else
{
hashCar = (Hashtable)Session["ShopCart"];
if (hashCar.Count == 0)
{
this.LinkCheck.Visible = false;
this.LinkClear.Visible = false;
this.LinkContinue.Visible = false;
}
else
{
dt = new DataTable();
DataColumn column1 = new DataColumn("NO");
DataColumn column2 = new DataColumn("BOOKID");
DataColumn column3 = new DataColumn("BOOOKNAME");
DataColumn column4 = new DataColumn("NUMBER");
DataColumn column5 = new DataColumn("PRICE");
DataColumn column6 = new DataColumn("SUMPRICE");
dt.Columns.Add(column1);
dt.Columns.Add(column2);
dt.Columns.Add(column3);
dt.Columns.Add(column4);
dt.Columns.Add(column5);
dt.Columns.Add(column6);
DataRow Row;
foreach (object key in hashCar.Keys)
{
Row = dt.NewRow();
Row["BOOKID"] = key.ToString();
Row["NUMBER"] = hashCar[key].ToString();
dt.Rows.Add(Row);
}
DataTable dstable;
int i = 1;
float price;
int count;
float sumprice = 0;
foreach (DataRow drRow in dt.Rows)
{
Sql = "select BookName,PRICE from book where BOOKID=" + Convert.ToInt32(drRow["BOOKID"].ToString());
dstable = HP.SelectBysql(Sql);
drRow["NO"] = i;
drRow["BOOKNAME"] = dstable.Rows[0][0].ToString();
drRow["PRICE"] = (dstable.Rows[0][1].ToString());
price = float.Parse(dstable.Rows[0][1].ToString());
count = Int32.Parse(drRow["NUMBER"].ToString());
drRow["SUMPRICE"] = price * count;
sumprice += price * count;
}
this.labTotalPrice.Text = "总价:" + sumprice.ToString();
this.ShopPing.DataSource = dt.DefaultView;
this.ShopPing.DataKeyNames = new string[] { "BOOKID" };
this.ShopPing.DataBind();
}
}
} --------------------编程问答-------------------- 单步跟踪检查
float.Parse(dstable.Rows[0][1].ToString());
count = Int32.Parse(drRow["NUMBER"].ToString());
值是否为数值型
--------------------编程问答--------------------
报错的是哪行代码? --------------------编程问答-------------------- 输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.FormatException: 输入字符串的格式不正确。
源错误:
行 83: {
行 84:
行 85: Sql = "select BookName,PRICE from book where BOOKID=" + Convert.ToInt32(drRow["BOOKID"].ToString());
行 86: dstable = HP.SelectBysql(Sql);
行 87: drRow["NO"] = i;
这是提示的错误
USE [ShopPing]
GO
/****** 对象: Table [dbo].[book] 脚本日期: 06/06/2010 14:38:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[book](
[BOOKID] [int] IDENTITY(1,1) NOT NULL,
[BOOKNAME] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[AUTHOR] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PRESS] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PRESSDATE] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[TYPENAME] [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PRICE] [float] NOT NULL,
[INFO] [varchar](300) COLLATE Chinese_PRC_CI_AS NOT NULL,
[ISBN] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PIC] [varchar](200) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
这是数据库 --------------------编程问答-------------------- 哪位好心的高手帮我看看,谢谢了 --------------------编程问答-------------------- Sql = "select BookName,PRICE from book where BOOKID="+drRow["BOOKID"].ToString();
不用转换也可以吧
--------------------编程问答-------------------- 还是断点下吧,同学,这个又是tostring 又是Convert.ToInt32 还没断点来的快·· --------------------编程问答-------------------- 楼上说的对,还是断一下看看drRow["BOOKID"].是什么
是否是“1”这样的,还是包括了其他的字符,eg,“1s” --------------------编程问答-------------------- 应该是这个 Convert.ToInt32(drRow["BOOKID"].ToString());错误了
补充:.NET技术 , ASP.NET