我有一个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,但它没有用。
答案 0 :(得分:0)
使用RowDataBound
和ColorTranslator.FromHtml
的GridView
事件:
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
,请相应地进行更改。