我将SQL值放在<td>
内,而这一行在它下面导致格式错误,我不知道解析是不正确还是遗漏了什么。请帮忙
litAccordionFooter.Text += "<td style='width: 12.2%;font-weight: bold;'>"
+ string.Format("{0:C}", (((ds.Tables[1].Rows[0]["TOTAL_AMT"]))
== DBNull.Value ? 1
: decimal.Parse((ds.Tables[1].Rows[0]["TOTAL_AMT"]).ToString()))
/ ((int.Parse((ds.Tables[1].Rows[0]["TOTAL_QTY"]).ToString())) == 0
|| ds.Tables[1].Rows[0]["TOTAL_QTY"] == DBNull.Value ? 1
: (int.Parse((ds.Tables[1].Rows[0]["TOTAL_QTY"]).ToString())))) + "</td>";
答案 0 :(得分:1)
正如@JoãoKleberson所说,您应该验证他们不是null
或empty
,并且他们实际上有int
和decimal
代表
int total_Amt = default(int);
decimal total_Qty = default(decimal);
if (decimal.TryParse(ds.Tables[1].Rows[0]["TOTAL_AMT"].ToString(), out total_Qty) &&
int.TryParse(ds.Tables[1].Rows[0]["TOTAL_QTY"].ToString(), out total_Amt))
{
var myString = "<td style='width: 12.2%;font-weight:bold;'>" +
string.Format("{0:C}", total_Amt / total_Qty == 0 ? 1 : total_Qty) + "</td>";
}
else
{
// The TOTAL_AMT and/or TOTAL_QTY values are not valid to convert them,
// verify they are not null and that they have the correct format
}
这样你可以安全地尝试将值转换为所需的类型,如果无法转换,则流程将转换为else
子句
答案 1 :(得分:0)
确保此声明:
(ds.Tables [1] .Rows [0] [&#34; TOTAL_AMT&#34;])
(ds.Tables [1] .Rows [0] [&#34; TOTAL_QTY&#34;])
它不是空的或空的