web-dev-qa-db-fra.com

Modifier la couleur de la ligne GridView en fonction de la condition

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.

39
Sunethpiumal
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");
    }
}
47
Nilesh Umaretiya
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;
    }
}
24
Mubashir Ahmed

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
    }
}
9
ashish.chotalia

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";
    }
}
3
Crazy Cat

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;
                }
            }
        }
0
Amir978