C# 基于Gridview datakeyname的Gridview背景色
我正在尝试根据数据键为gridview背景行着色。我想要的是,每一组数据键名称都用灰色表示,然后是白色,然后是灰色,等等。因此,根据不同的数据键名称进行交替。下面是我的代码。有人能帮我吗C# 基于Gridview datakeyname的Gridview背景色,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在尝试根据数据键为gridview背景行着色。我想要的是,每一组数据键名称都用灰色表示,然后是白色,然后是灰色,等等。因此,根据不同的数据键名称进行交替。下面是我的代码。有人能帮我吗 protected void grdContents_RowDataBound(object sender, GridViewRowEventArgs e) { //Default values string strPreviousDataKeyValue = ""; Color Row
protected void grdContents_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Default values
string strPreviousDataKeyValue = "";
Color RowColor = Color.grey;
foreach (GridViewRow row in grdContents.Rows)
{
if (!strPreviousDataKeyValue.Equals(grdContents.DataKeys[row.RowIndex].Value.ToString()))
{
row.BackColor = RowColor;
strPreviousDataKeyValue = grdContents.DataKeys[row.RowIndex].Value.ToString();
}
}
}
RowDataBound
对GridView
中的每一行执行。因此,您的foreach
循环非常冗余。您还必须检查是否正确RowType=DataRow
这应该起作用:
protected void grdContents_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowIndex == 0)
e.Row.BackColor = Color.Gray;
else
{
var thisKey = grdContents.DataKeys[e.Row.RowIndex].Value;
var prevKey = grdContents.DataKeys[e.Row.RowIndex - 1].Value;
var prevRow = grdContents.Rows[e.Row.RowIndex - 1];
if (thisKey.Equals(prevKey))
e.Row.BackColor = prevRow.BackColor;
else
e.Row.BackColor = prevRow.BackColor == Color.Gray ? Color.White : Color.Gray;
}
}
}
这就是你的代码,它起作用了吗?如果没有,您可以指定问题吗?为什么不在gridview中使用
?我正在尝试更改分组数据键名称的颜色这正是我想要的。代码只将前两行更改为灰色。@user1049984:我很高兴听到你让它工作了,但是怎么了?