谁能帮我看看这代码那里有问题,提示说是输入字符串有问题,读不出购物车,哪位帮我看看
,我刚注册的分不是很多
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();
                }
            }
        } 

解决方案 »

  1.   

    单步跟踪检查
    float.Parse(dstable.Rows[0][1].ToString());
      count = Int32.Parse(drRow["NUMBER"].ToString());
    值是否为数值型
      

  2.   

    输入字符串的格式不正确。 
    说明: 执行当前 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这是数据库
      

  3.   

    Sql = "select BookName,PRICE from book where BOOKID="+drRow["BOOKID"].ToString();不用转换也可以吧
      

  4.   

    还是断点下吧,同学,这个又是tostring 又是Convert.ToInt32  还没断点来的快··
      

  5.   

    楼上说的对,还是断一下看看drRow["BOOKID"].是什么
    是否是“1”这样的,还是包括了其他的字符,eg,“1s”
      

  6.   

    应该是这个 Convert.ToInt32(drRow["BOOKID"].ToString());错误了