Я хочу изменить определенный цвет строки gridview на основе некоторого условия, я использую ASP.NET с С#. Спасибо.
Изменение цвета строки GridView на основе условия
Ответ 1
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Attributes.Add("style", "cursor:help;");
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Alternate)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='orange'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#E56E94'");
e.Row.BackColor = Color.FromName("#E56E94");
}
}
else
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='orange'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='gray'");
e.Row.BackColor = Color.FromName("gray");
}
//e.Row.Cells[0].BackColor = Color.FromName("gray");
//e.Row.Cells[1].BackColor = Color.FromName("gray");
//e.Row.Cells[2].BackColor = Color.FromName("gray");
//e.Row.Cells[3].BackColor = Color.FromName("gray");
//e.Row.Cells[4].BackColor = Color.FromName("gray");
//e.Row.BorderWidth = 2;
//e.Row.BorderColor = Color.FromName("#43C6DB");
}
}
Ответ 2
protected void DrugGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
// To check condition on integer value
if (Convert.ToInt16(DataBinder.Eval(e.Row.DataItem, "Dosage")) == 50)
{
e.Row.BackColor = System.Drawing.Color.Cyan;
}
}
Ответ 3
Создайте событие GridView1_RowDataBound
для вашего GridView.
//Check if it is not header or footer row
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Check your condition here
If(Condition True)
{
e.Row.BackColor = Drawing.Color.Red // This will make row back color red
}
}
Ответ 4
Этот метод изменяет как задний цвет (до темно-красного), так и текст (на белый), если в одном из столбцов встречается определенная строка ( "TextToMatch" ):
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells[8].Text.Equals("TextToMatch"))
{
e.Row.BackColor = System.Drawing.Color.DarkRed;
e.Row.ForeColor = System.Drawing.Color.White;
}
}
Или другой способ записать его:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells[8].Text.Equals("TextToMatch"))
{
e.Row.Attributes.CssStyle.Value = "background-color: DarkRed; color: White";
}
}
Ответ 5
В качестве альтернативы вы можете отнести строку DataItem к классу, а затем добавить условие, основанное на свойствах класса. Вот пример, который я использовал для преобразования строки в класс/модель с именем TimetableModel, а затем в инструкции if вы имеете доступ ко всем полям/свойствам класса:
protected void GridView_TimeTable_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var tt = (TimetableModel)(e.Row.DataItem);
if (tt.Unpublsihed )
e.Row.BackColor = System.Drawing.Color.Red;
else
e.Row.BackColor = System.Drawing.Color.Green;
}
}
}
Ответ 6
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lbl_Code = (Label)e.Row.FindControl("lblCode");
if (lbl_Code.Text == "1")
{
e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#f2d9d9");
}
}
}
Ответ 7
\\loop throgh all rows of the grid view
if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value1")
{
GridView1.Rows[i - 1].ForeColor = Color.Black;
}
else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value2")
{
GridView1.Rows[i - 1].ForeColor = Color.Blue;
}
else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value3")
{
GridView1.Rows[i - 1].ForeColor = Color.Red;
}
else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value4")
{
GridView1.Rows[i - 1].ForeColor = Color.Green;
}