我有以下代码
private void ShowBill(int Prof_id,int Plan_id)
{
dt = new DataTable();
dt = objmatportal.CreateBill(Prof_id, Plan_id);
if (dt.Rows.Count > 0)
{
lblbillto.Text = dt.Rows[0]["CONT_FNAME"].ToString() + " " + dt.Rows[0]["CONT_LNAME"].ToString() + "" + dt.Rows[0]["CONT_STATE"].ToString() + "" + dt.Rows[0]["CONT_CITY"].ToString();
lblpayTo.Text = dt.Rows[0]["PAYTO"].ToString();
lblDescription.Text = dt.Rows[0]["PLAN_NAME"].ToString();
lblAmount.Text ="Rs. "+string.Format("{0:0.00}",dt.Rows[0]["AMOUNT"]);
lblTax.Text ="Rs. " +string.Format("{0:0.00}", dt.Rows[0]["VAT"]);
LblTotal.Text ="Rs. "+ string.Format("{0:0.00}", dt.Rows[0]["TOTAL"]);
ViewState["Total"] = dt.Rows[0]["TOTAL"].ToString();
}
else
{
Response.Write("Something gone wrong");
}
}
关于上述方法 在ViewState [" Total"] = dt.Rows [0] [" TOTAL"]。ToString(); 我已将值分配给ViewState [" Total"]
但是当我运行以下方法时,它会显示错误"指定的演员表无效。"在以下一行
Total =(int)(ViewState [" Total"]);
public int TotalwithConvenience()
{
int Total=0;
decimal percentage = decimal.Parse(ViewState["CARD_PERCENT"].ToString());
Total = (int)(ViewState["Total"]);
decimal TDR = Total * percentage / 100;
TDR = Math.Round(TDR);
int tdrchrges = Convert.ToInt32(TDR.ToString());
ViewState["convenience"] = tdrchrges;
Total = Total + tdrchrges;
return Total;
}
需要帮助来解决这个问题
答案 0 :(得分:2)
试试这个:
Total = Convert.ToInt32(ViewState["Total"]);
答案 1 :(得分:0)
Convert.Tointeger16(ViewState["convenience"]).ToString());
答案 2 :(得分:0)
您使用
ViewState["Total"] = dt.Rows[0]["TOTAL"].ToString();
将值保存在" Total"在ViewState中。这意味着您存储字符串。
当您使用(int)(ViewState["Total"])
时,您告诉编译器您在那里存储了一个整数,因此它在运行时失败(字符串不是整数)。
两种可能的解决方案:
Total = Convert.ToInt32(ViewState["Total"]);
来阅读ViewState["Total"] = dt.Rows[0]["TOTAL"];
(不使用.ToString()
)来存储它(如果该值确实是整数)答案 3 :(得分:0)
我也遇到了同样的问题,但是下面的声明解决了它
Convert.ToInt32(ViewState["Total"]);