【问题标题】: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"] 中的值是多少?您无法使用 &gt; 比较不同类型的值
  • >94% 是问题..
  • ds.Tables[0].Rows[i]["Achievement"] 的值是多少?
  • 值如 94.99%、56.00%..
  • @user3510330 :很好,那么我的回答会帮助你做到这一点

标签: c# html html-table


【解决方案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 :您需要对此答案进行进一步说明吗?如果它解决了您的问题,请不要忘记将其标记为已接受。
猜你喜欢
  • 2016-06-08
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多