要求:用gridview呈现数据库中的一个成绩表(只有3个字段),要求用不同于其他行的颜色标出不及格的成绩的行,并把小于60的分数字段列设置为不同于其他颜色。如下图:
解决办法:
我们可以通过响应Gridview.RowDataBand事件来完成此任务。该事件在网格的一部分(标题,脚注,分页,普通行或交替行,选定项)被创建时发生.
访问当前行时将其(当前行)视为GridViewRow控件。 gridviewrow.DataItem属性提供指定行的数据对象,而通过gridviewRow.Cells集合可以读取行的内容。通过GridView可以改变颜色和对其方式,增加或删除子控件等.
下面看实现上面效果的代码:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//处理行数据绑定事件
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
//检查当前行是不是数据行(不是网格的其他部分,如页面,脚注或标题).
if (e.Row.RowType == DataControlRowType.DataRow)
{
//得到正在被创建项的指定列(这里为"Scrore")的值
int score =Convert.ToInt32( DataBinder.Eval(e.Row.DataItem, "Scrore "));
//如果成绩小于60分,设置行的背景色和行中具体的单元格的颜色、字体
if (score < 60)
{
e.Row.BackColor = System.Drawing.Color.YellowGreen;
e.Row.Cells[2].ForeColor = System.Drawing.Color.Red;
e.Row.Cells[2].Font.Bold = true;
e.Row.Cells[2].Font.Size = 15;
}
}
}
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
//检查当前行是不是数据行(不是网格的其他部分,如页面,脚注或标题).
if (e.Row.RowType == DataControlRowType.DataRow)
{
//得到正在被创建项的指定列(这里为"Scrore")的值
int score =Convert.ToInt32( DataBinder.Eval(e.Row.DataItem, "Scrore "));
//如果成绩小于60分,设置行的背景色和行中具体的单元格的颜色、字体
if (score < 60)
{
e.Row.BackColor = System.Drawing.Color.YellowGreen;
e.Row.Cells[2].ForeColor = System.Drawing.Color.Red;
e.Row.Cells[2].Font.Bold = true;
e.Row.Cells[2].Font.Size = 15;
}
}
}