首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

购物车系统遇到的奇怪有关问题

2012-02-20 
购物车系统遇到的奇怪问题这是我的“加入购物车”系统,当多次加入同一个商品时,(数量和总价计算都正常),但如

购物车系统遇到的奇怪问题
这是我的“加入购物车”系统,当多次加入同一个商品时,(数量和总价计算都正常),但如果加入了另一个商品时,就出问题了。DataTable   中总会多出不需要的行。
请大家帮我看看。急用!

protected   void   BtnAddToCar_Click(object   sender,   EventArgs   e)
        {
                int   goodsId   =   Int32.Parse(this.DetailsView1.Rows[0].Cells[1].Text);
                string   theGoodsName   =   (this.DetailsView1.Rows[1].Cells[1].Text).ToString();
                decimal   thePrice   =   Convert.ToDecimal(this.DetailsView1.Rows[5].Cells[1].Text);

                //DataTable   dtb   =   Session[ "myCar "]   as   DataTable;

                if   (Session[ "myCar "]   ==   null)
                {
                        DataTable   dtb   =   new   DataTable();
                        dtb.Columns.Add( "goodsId ",   typeof(int));
                        dtb.Columns.Add( "thtGoodsName ");
                        dtb.Columns.Add( "thePrice ");
                        dtb.Columns.Add( "TheCount ");
                        dtb.Columns.Add( "TotalPrice ");


                        DataRow   dRow   =   dtb.NewRow();
                        dRow[ "goodsId "]   =   goodsId;
                        dRow[ "thtGoodsName "]   =   theGoodsName;
                        dRow[ "thePrice "]   =   thePrice;
                        dRow[ "TheCount "]   =   1;
                        dRow[ "TotalPrice "]   =   thePrice;
                        dtb.Rows.Add(dRow);
                        Session[ "myCar "]   =   dtb;

                }

                else
                {
                        DataTable   dtb   =   Session[ "myCar "]   as   DataTable;
                        for   (int   i   =   0;   i   <   dtb.Rows.Count;   i++)
                        {
                                if   (Convert.ToInt32(dtb.Rows[i][0])   ==   goodsId)


                                {
                                        DataRow   oldDR;
                                        oldDR   =   dtb.Rows[i];
                                        oldDR[ "TheCount "]   =   Int32.Parse(oldDR[ "TheCount "].ToString())   +   1;
                                        oldDR[ "thePrice "]   =   thePrice;

                                        oldDR[ "TotalPrice "]   =   thePrice   *   Int32.Parse(oldDR[ "TheCount "].ToString());
                                }
                                else
                                {
                                        DataRow   dRow   =   dtb.NewRow();
                                        dRow[ "goodsId "]   =   goodsId;
                                        dRow[ "thtGoodsName "]   =   theGoodsName;
                                        dRow[ "thePrice "]   =   thePrice;
                                        dRow[ "TheCount "]   =   1;
                                        dRow[ "TotalPrice "]   =   thePrice;
                                        dtb.Rows.Add(dRow);
                                }
                                Session[ "myCar "]   =   dtb;
                        }
                }
              Response.Redirect( "myCar.aspx ");
        }

[解决办法]
for(){}里边不应该有else{}逻辑。
------解决方案--------------------


逻辑明显有问题

bool isInCart = false;
for (int i = 0; i < dtb.Rows.Count; i++)
{
if (Convert.ToInt32(dtb.Rows[i][0]) == goodsId)
{
isInCart = true;

}

if(isInCart)
{
}
else
{
}
[解决办法]
DataTable dtb = Session[ "myCar "] as DataTable;
bool isExist = false;
for (int i = 0; i < dtb.Rows.Count; i++)
{
if (Convert.ToInt32(dtb.Rows[i][0]) == goodsId)
{
DataRow oldDR;
oldDR = dtb.Rows[i];
oldDR[ "TheCount "] = Int32.Parse(oldDR[ "TheCount "].ToString()) + 1;
oldDR[ "thePrice "] = thePrice;

oldDR[ "TotalPrice "] = thePrice * Int32.Parse(oldDR[ "TheCount "].ToString());

isExist = true;
break;
}
}
if(!isExist )
{
DataRow dRow = dtb.NewRow();
dRow[ "goodsId "] = goodsId;
dRow[ "thtGoodsName "] = theGoodsName;
dRow[ "thePrice "] = thePrice;
dRow[ "TheCount "] = 1;
dRow[ "TotalPrice "] = thePrice;
dtb.Rows.Add(dRow);
}
Session[ "myCar "] = dtb;

热点排行