将gridview背景颜色设置为datatable的颜色?

问题描述:

我有一个datatable,看起来像这样:将gridview背景颜色设置为datatable的颜色?

Row1  Row2 Row3 Row4 Row5 Row6 
Gold  Gold    
Pink  Pink    
#FB7703 #FB7703    
Red  Red    
Yellow      
Green       
#0B93E1      
Purple      

这是网格的外观时,当我的数据表绑定到网格状: enter image description here

如何设置单元格的背景色gridview到单元格中的颜色?我知道我需要使用RowDataBound

标记为GridView控件:

<div> 
    <asp:GridView ID="GridViewClicks" runat="server" 
     onrowdatabound="GridViewClicks_RowDataBound"> 
    </asp:GridView> 
</div> 

而隐藏代码填充数据表:

DataTable dataTable = GetColors(); 

DataTable gridTable = new DataTable(); 
gridTable.Columns.Add("Row1", typeof(string)); 
gridTable.Columns.Add("Row2", typeof(string)); 
gridTable.Columns.Add("Row3", typeof(string)); 
gridTable.Columns.Add("Row4", typeof(string)); 
gridTable.Columns.Add("Row5", typeof(string)); 
gridTable.Columns.Add("Row6", typeof(string)); 

for (int i = 0; i < 8; i++) 
{ 
    var r = gridTable.NewRow(); 
    gridTable.Rows.Add(r); 
} 

foreach (DataRow r in dataTable.Rows) 
{ 
    int rowNum = Convert.ToInt16(r[1]) - 1; 
    int colNum = Convert.ToInt16(r[3]); 
    gridTable.Rows[rowNum][colNum] = r["color"].ToString(); 
} 

GridViewClicks.DataSource = gridTable; 
GridViewClicks.DataBind(); 

感谢。

+0

请让我知道为什么我的问题是downvoted,以便我可以改善它。 – rbhat

您可以检查RowDataBound事件中每个单元格的值,并根据该单元格的值对单元格着色。

protected void GridViewClicks_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the current row is a datarow 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //loop all the cells in the row 
     foreach (TableCell cell in e.Row.Cells) 
     { 
      //check if the color is hex or a string 
      if (cell.Text.Contains("#")) 
      { 
       cell.BackColor = ColorTranslator.FromHtml(cell.Text); 
      } 
      else 
      { 
       cell.BackColor = Color.FromName(cell.Text); 
      } 
     } 
    } 
}