列的值颜色根据条件变化

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"] 中的值是多少?您无法使用 &gt; 比较不同类型的值 >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 :您需要对此答案进行进一步说明吗?如果它解决了您的问题,请不要忘记将其标记为已接受。

以上是关于列的值颜色根据条件变化的主要内容,如果未能解决你的问题,请参考以下文章

如何根据条件(组中的值)更新列?

如何根据 prop 有条件地渲染组件的颜色?

Excel中,如何根据某一列的值来修改整行的颜色?

根据条件更改 GridMvc 列的背景

根据三列的值有条件地和交互地计算列

如何根据另一列的条件查询同一列两次?