2010-06-30 99 views
3

好吧,我显然没有喂谷歌正确的查询,或者我现在已经发现了。我希望这个论坛上有人能帮助我。如何根据条件语句更改gridview单元格的背景颜色?

所以我有一个数据表,我添加行到基于datareader从数据库上执行的sql查询获取其信息。到现在为止还挺好。现在,其中一列称为“分析”,如果前两列匹配,我需要其背景颜色为绿色,否则为红色。

如果我不能触摸背景颜色,我想插入一个特殊字符,任何不被解释为文本的javascript。

简而言之,我想要从代码隐藏的CSS视图的CSS控制。我看了看,无济于事。我发现this的家伙,但我没有检查他的解决方案是否可以在ASP.Net/C#网站上使用。有任何想法吗?

回答

3

GridView_RowDataBound事件中,获取要更改背景色的单元格,设置单元格的颜色(如果条件测试为true)。

/// <summary> 
/// Handles gridview row data bound event. 
/// </summary> 
/// <param name="sender">Sender Object</param> 
/// <param name="e">Event Argument</param> 
protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    // We don’t want to apply this to headers. 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     try 
     { 
      //your data-object that is rendered in this row, if at all required. 
      //Object obj = e.Row.DataItem; 

      //find the right color from condition 
      string color = condition ? "#ff9900" : "some-other-color"; 

      //set the backcolor of the cell based on the condition 
      e.Row.Cells[4].Attributes.Add("Style", "background-color: " + color + ";"); 
     } 
     catch 
     { 
     } 
    } 
} 
+0

这工作!非常感谢你:) – Freakishly 2010-07-01 01:31:08

0
protected void GVKeywordReport_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 

      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       DataRow pr = ((DataRowView)e.Row.DataItem).Row; 
       int oldPos = Convert.ToInt32(pr["oldposition"]); 
       int newPos = Convert.ToInt32(pr["newposition"]); 
       GVKeywordReport.HeaderRow.Cells[3].Text = txtfrmdate.Text; 
       GVKeywordReport.HeaderRow.Cells[4].Text = txtEndDate.Text; 

       GVKeywordReport.HeaderRow.BackColor = ColorTranslator.FromHtml("#B3B300"); 
       e.Row.Cells[0].BackColor = ColorTranslator.FromHtml("#B3B300"); 
       e.Row.Cells[5].BackColor = ColorTranslator.FromHtml("#FFFFFF"); 

       if (oldPos == newPos) 
       { 
        e.Row.BackColor = ColorTranslator.FromHtml("#FF950E"); 
        e.Row.Cells[6].Text = "No Change"; 
       } 
       else if (oldPos > newPos) 
       { 
        e.Row.BackColor = ColorTranslator.FromHtml("#FFFFCC"); 
        e.Row.Cells[6].Text = "Improved"; 
       } 
       else 

       { 
        e.Row.BackColor = ColorTranslator.FromHtml("#FF0000"); 
        e.Row.Cells[6].Text = "Decreased"; 
       } 
       // e.Row.Cells[0].BackColor = ColorTranslator.FromHtml("#7DA647"); 
      } 
     } 
+0

虽然这个代码块可能会回答这个问题,但最好能提供一些解释为什么它会这样做 – 2015-01-27 08:42:16

相关问题