将gridview backcolor设置为数据表中的颜色?
我有一个看起来像这样的数据表:
Row1 Row2 Row3 Row4 Row5 Row6 Gold Gold Pink Pink #FB7703 #FB7703 Red Red Yellow Green #0B93E1 Purple
当我将数据表绑定到网格时,这就是网格的样子:
如何将gridview中单元格的背景颜色设置为单元格中的颜色?
我知道我需要使用RowDataBound
。
gridview的标记:
并且填充数据表的代码隐藏:
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();
谢谢。
您可以检查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); } } } }