列的值颜色根据条件变化
Posted
技术标签:
【中文标题】列的值颜色根据条件变化【英文标题】:Column's value color change based on condition 【发布时间】:2016-10-21 05:13:33 【问题描述】:我使用占位符控件来生成动态表。现在我需要根据条件为下面的列值设置颜色,但我的 if 条件不起作用。怎么做?这是我的代码:
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
strResults.Append("<tr style='color: black;'>");
strResults.Append("<td>" + ds.Tables[0].Rows[i]["Description"] + "</td>");
strResults.Append("<td>" + ds.Tables[0].Rows[i]["Target"] + "</td>");
strResults.Append("<td>" + ds.Tables[0].Rows[i]["Actual"] + "</td>");
if(ds.Tables[0].Rows[i]["Achievement"] >94% )
strResults.Append("<td style='color: green;'>" + ds.Tables[0].Rows[i]["Achievement"] + "</td>");
strResults.Append("</tr>");
【问题讨论】:
ds.Tables[0].Rows[i]["Achievement"]
中的值是多少?您无法使用 >
比较不同类型的值
>94% 是问题..
ds.Tables[0].Rows[i]["Achievement"]
的值是多少?
值如 94.99%、56.00%..
@user3510330 :很好,那么我的回答会帮助你做到这一点
【参考方案1】:
你不能像你正在做的那样做比较。最好将ds.Tables[0].Rows[i]["Achievement"]
中的输出解析为加倍,然后将它们与94
比较,而不是与94%
;并在比较之前解析输入中的双精度值。我建议使用double.TryParse()
进行比较
double Achievement = 0.0;
if (double.TryParse(ds.Tables[0].Rows[i]["Achievement"].ToString().Replace("%",""), out Achievement)
&& Achievement > 94)
strResults.Append("<td style='color: green;'>" + ds.Tables[0].Rows[i]["Achievement"] + "</td>");
else
strResults.Append("<td>" + ds.Tables[0].Rows[i]["Achievement"] + "</td>");
strResults.Append("</tr>");
【讨论】:
@user3510330 :double.TryParse()
会将转换后的结果/输出提供给outParameter
并返回一个表示操作状态的布尔值,我在答案中添加了一个链接
@user3510330 :您需要对此答案进行进一步说明吗?如果它解决了您的问题,请不要忘记将其标记为已接受。以上是关于列的值颜色根据条件变化的主要内容,如果未能解决你的问题,请参考以下文章