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

-GridView剔除最后一行出错-

2011-12-20 
---------------------GridView删除最后一行出错--------------------代码:protectedvoidGVBuy_RowCommand

---------------------GridView删除最后一行出错--------------------
代码:
protected   void   GVBuy_RowCommand(object   sender,   GridViewCommandEventArgs   e)
        {
                if   (e.CommandName   ==   "Del ")
                {
                        string   Cid   =   e.CommandArgument.ToString();
                        if   (Session[ "shopcard "]   !=   null)
                        {
                                DataTable   dtShopcard   =   (DataTable)Session[ "shopcard "];
                                for   (int   i   =   0;   i   <   dtShopcard.Rows.Count;   i++)
                                {
                                        if   (dtShopcard.Rows[i][ "Cid "].ToString()   ==   Cid)
                                        {
                                                dtShopcard.Rows.RemoveAt(i);
                                        }
                                }
                                //
                                Session[ "shopcard "]   =   dtShopcard;
                                //
                                DataLoad();
                        }
                }

        }


  private   void   Atotal()
        {
                if   (Session[ "shopcard "]   !=   null)
                {
                        decimal   tol   =   0,   tmptol   =   0;
                        DataTable   dtShopCard   =   (DataTable)Session[ "shopcard "];
                        for   (int   i   =   0;   i   <   dtShopCard.Rows.Count;   i++)


                        {
                                tmptol   =   Convert.ToDecimal(dtShopCard.Rows[i][ "Ctotal "]);//--------删除最后一行时该行提示对象不能从   DBNull   转换为其他类型
                                tol   +=   tmptol;
                        }
                        ctotal   =   tol.ToString( "C ");
                }
                             
        }

请问是哪里的问题?

[解决办法]
加个toString试试Convert.ToDecimal(dtShopCard.Rows[i][ "Ctotal "].toString())
[解决办法]
因为你删除一行后,行数已经变了,但行号还没变!
[解决办法]
for (int i =dtShopCard.Rows.Count-1 ; i > =0; i--)这样写才对吧!?

热点排行