Изменение цвета ячейки при различных значениях - Gridview
Мне нужно различать две последовательные клетки.
каждый в строке, если они имеют разные значения, когда databindind значения в gridview.
Итак, если в строке 1 у меня есть ячейка "ABC", а в строке 2 у меня есть ячейка "CBA".
Мне нужно покрасить каждую ячейку другим цветом.
каков наилучший способ сделать это?
5 ответов
вы можете сделать это в событии rowdatabound gridview. Сохраните предыдущую строку в viewstate или session и сопоставьте ее со следующей строкой. Если он не совпадает, измените цвет, иначе не меняйте.
Это называется условным форматированием
Вы можете включить событие RowDataBound в разметке
<asp:GridView ID="gridview1" runat="server" OnRowDataBound="RowDataBound">
</asp:GridView>
и поместите это в свой файл с кодом.
protected void RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
if(e.Row.RowIndex == 0) // This is row no.1
if(e.Row.Cells[0].Text == "ABC")
e.Row.Cells[0].BackColor = Color.Red;
if(e.Row.RowIndex == 1) // This is row no.2
if(e.Row.Cells[0].Text == "CBA")
e.Row.Cells[0].BackColor = Color.Green;
}
}
добавить в gridview в html части страницы OnRowDataBound= "gridView1_DataBinding". А затем добавьте обработчик событий отделенного кода:
protected void gridView1_DataBinding(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow) return;
var c = e.Row.FindControl("IdOfControl") as Label;
if(c != null)
{
if (c.Text == "ABC")
e.Row.BackColor = GetColor("Gray");
if (c.Text == "BCA")
e.Row.BackColor = GetColor("Green");
}
}
private Color GetColor(string color)
{
return Color.FromName(color);
}
С наилучшими пожеланиями, Дима.
если я вас правильно понял, вы хотите изменить цвет ячейки в зависимости от значения это. если это правильно, вы можете попробовать вот так:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((Label)e.Row.Cells[0].FindControl("ValueHoldingControl").Text == "ABC")
{
//Coloring the cell
}
}
}
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
}
}