当前位置:编程学习 > C#/ASP.NET >>

谁能帮我看下.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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,