读书人

-GridView剔除最后一行出错-

发布时间: 2011-12-20 22:26:40 作者: rapoo

---------------------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--)这样写才对吧!?

读书人网 >C#

热点推荐