7
votes

Mettre en surbrillance la ligne de grille quand une condition est remplie

J'utilise vs2005 C # Server-côté code> codage.

Je suis curieux de savoir que dans Version VS2005 code>, est-il possible de en surbrillance code> une ligne dans une grille à grille quand une condition est remplie? Par exemple. Si la colonne risque forte> est stockée comme élevé forte> dans la base de données de cette ligne spécifique, la ligne sera en surbrillance en rouge code>. P>

Est-ce possible? P>


EDIT: strong> p>

Code actuel: p>

protected void GridView1_OnRowDataBound(Object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
    // do your stuffs here, for example if column risk is your third column:
    if (e.Row.Cells[3].Text == "H")
    {
        e.Row.BackColor = Color.Red;
    }
}
}


3 commentaires

Non, ondatabound ne se fait tirer une fois ce que vous voulez. Cela montre-t-il une erreur lorsque vous essayez ONROWDABOND?


Assurez-vous que votre méthode «GridView_onRowAbound» est définie sur «Public».


@Ruihao vérifier ma solution, je pense que le .text serait plus applicable dans l'événement de données de données plutôt que dans rowdatabound car la valeur est réellement contenue par un contrôle et non la cellule afin dataxier.eval devrait fonctionner pour vous


5 Réponses :


11
votes

Oui, Ajouter OnRowDatabound = "Yourgridview_rowDatabound" code> à votre gridview. Cet événement est déclenché pour chaque rangée de grilleview.

Dans le code derrière, avez-vous: P>

public void yourGridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // do your stuffs here, for example if column risk is your third column:
        if (e.Row.Cells[2].Text == "high")
        {
            e.Row.BackColor = Color.Red;
        }
    }
}


5 commentaires

Vérifiez votre E.ROW.Cells [3] .text est vraiment égal à "HIGH" (cas corrects, pas d'espaces supplémentaires, etc.). Vous pouvez utiliser Response.write ("-" + E.ROW.Cells [3] .text + "-") Pour afficher les valeurs.


Il est correct, en haut de ma page est plein du texte de ma troisième colonne.


Essayez temporairement désactiver "si (e.row.cells [3] .text ==" h ") {}" et juste laisser "E.ROW.BackColor = Color.red;". La couleur change-t-elle maintenant?


Oui, toute la table devient rouge.


Ensuite, cela signifie "si (e.row.cells [3] .Text ==" h ")" ne revient jamais vrai. Je ne vois pas que vos données ne peuvent donc pas dire pourquoi elles ne correspondent pas mais que vous devriez pouvoir identifier toute différence entre les deux.



1
votes

Vous devez vous abonner à l'événement Rowdatabound de la grille et saisissez la ligne de la ligne qui a votre colonne mentionnant le risque comme élevé, puis définissez le Backcolor de la ligne à votre Soulignant la couleur de la couleur xxx

msdn Formatage de la grille basée sur la grille sur les données sous-jacentes


0 commentaires

3
votes

Utilisez l'événement Rowdatabound. Dans cet événement, vous pourrez ajouter le CSS en fonction de votre condition

 void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {

    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      // Logic for High
      if(e.Row.Cells[1].Text > 100)
      //set color
      e.Row.Attributes.Add("style", "this.style.backgroundColor = '#FFFFFF';");

    }

  }


0 commentaires

1
votes

in Rowdatabound Essayez: XXX


0 commentaires

-1
votes
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = Color.Yellow;

            Label l1 = (Label)e.Row.FindControl("lblage");
            if(Convert.ToInt32( l1.Text)>=30)
            {
                e.Row.BackColor = Color.Tomato;
            }

        }

1 commentaires

Il serait utile que vous ayez ajouté une description de votre idée, pas de code uni.