来自数据库的GridView颜色

时间:2015-09-01 11:38:56

标签: c# asp.net gridview

我有一个SQL数据库,其中包含颜色的十六进制代码。我希望根据十六进制代码更改网格的每一行。一行包含(On DB)Team,Year,City,Stadium,Fore_Color,Back_Color。我尝试使用Eval获取每行的指定颜色,但无法设法完成。我正在使用c#,asp.net。

例如,为什么这不起作用?:

 e.Row.BackColor = Color.FromKnownColor(System.Drawing.ColorTranslator.FromHtml(DataBinder.Eval(e.Row.BackColor,"Back_Color")));

或者这个:

e.Row.BackColor = ColorTranslator.FromHtml(Eval("Back_Color").ToString());
    e.Row.ForeColor = ColorTranslator.FromHtml(Eval("Front_Color").ToString());

这会出现以下错误: Eval()XPath()Bind()等数据绑定方法只能在databound控件的上下文中使用。

我尝试将OnRowDataBound用于gridview,但它没有用。

1 个答案:

答案 0 :(得分:0)

使用RowDataBoundColorTranslator.FromHtmlGridView事件:

protected void GrdidView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRow row = ((DataRowView)e.Row.DataItem).Row;
        Color backColor = ColorTranslator.FromHtml(row.Field<string>("Back_Color"));
        e.Row.BackColor = backColor;
        Color frontColor = ColorTranslator.FromHtml(row.Field<string>("Front_Color"));
        e.Row.ForeColor = frontColor;
    }
}

如果您在调试器中使用不同的DataItem,请相应地进行更改。