Je souhaite modifier une couleur de ligne particulière de gridview en fonction de certaines conditions, j'utilise ASP.NET avec c #. Je vous remercie.
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");
}
}
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;
}
}
Créez un événement GridView1_RowDataBound
pour votre 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
}
}
Cette méthode modifie la couleur de fond (en rouge foncé) et le texte (en blanc) si une chaîne spécifique ("TextToMatch") apparaît dans l'une des colonnes:
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;
}
}
Ou une autre façon de l'écrire:
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";
}
}
Vous pouvez également convertir la ligne DataItem en classe, puis ajouter une condition en fonction des propriétés de la classe. Voici un exemple que j'ai utilisé pour convertir la ligne en classe/modèle nommé TimetableModel. Dans l'instruction if, vous avez accès à tous les champs/propriétés de la classe:
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;
}
}
}