Ligne particulière d'un datagrid...

Signaler
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006
-
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006
-
bonjour
voici mon pbm:

J’ai une dataset que j’affiche dans une datagrid, pas de soucis.
Ensuite,je voudrais que pour les lignes dont ,par exemple, un champ spécifié nest pas renseigné,
la couleur de la ligne concernée soit différente des autres.

autre explication : par ex, je voudrai afficher en rouge les commandes qui nont pas été facturées.

auriez vous une idée ou une indicaion à me donner?



RRR

8 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Voila un exemple(en vb.Net) qui montre comment customizer son Datagrid afin de faire ce que tu souhaites.
Si tu peux te permettre d'utiliser du .Net 2, alors tu pourrais utiliser un DataGridView, qui permet de faire ca beaucoup plus facilement

Mx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q745q' target='_blank'>Autre petite lecture

Mx
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

bonjour et merci pour ta réponse,

j'ai donc un code interressant qui permet de colorer les cellules particulières dun datagrid (que je pourrai exploiter par la suite). c'est une classe qui hérite de la classe datagridtextboxcolumn avec un override sur la méthode paint. l'ennui c'est que je ne sais pas comment intégrer cette classe et utiliser la propriété colorée des cellule dans mon projet

public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn

{
protected override void Paint(System.Drawing.Graphics g,
System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager
source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush
foreBrush, bool alignToRight)
{

// the idea is to conditionally set the foreBrush and/or backbrush

// depending upon some crireria on the cell value

// Here, we color anything that begins with a letter higher than 'F'

try{

object o = this.GetColumnValueAtRow(source, rowNum);

if( o!= null)

{
char c = ((string)o)[0];
if( c > 'F')
{
// could be as simple as
// backBrush = new SolidBrush(Color.Pink);
// or something fancier...

backBrush = new LinearGradientBrush(bounds,
Color.FromArgb(255, 200, 200),

Color.FromArgb(128, 20, 20),

LinearGradientMode.BackwardDiagonal);

foreBrush = new SolidBrush(Color.White);

}
}
}

catch(Exception ex){ /* empty catch */ }

finally{

// make sure the base class gets called to do the drawing with

// the possibly changed brushes

base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
}
}
}

RRR
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

désolé pour laffichage, les saut de ligne ne sont pas pris en compte
RRR
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Si tu utilises Opéra, passe plutôt par Firefox ou IE.
Sinon essaie d'utiliser la zone de saisie "TextBox classique" (cf lien en bas de page)

/*
coq
MVP Visual C#
*/
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

bonjour et merci pour ta réponse,j'ai donc un code interressant qui permet de colorer les cellules particulières dun datagrid (que je pourrai exploiter par la suite). c'est une classe qui hérite de la classe datagridtextboxcolumn avec un override sur la méthode paint. l'ennui c'est que je ne sais pas comment intégrer cette classe et utiliser la propriété colorée des cellule dans mon projet

public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn
{
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
{
// the idea is to conditionally set the foreBrush and/or backbrush
// depending upon some crireria on the cell value
// Here, we color anything that begins with a letter higher than 'F'
try
{
object o = this.GetColumnValueAtRow(source, rowNum);
if( o!null) { char c ((string)o)[0];
if( c > 'F')
{ // could be as simple as
// backBrush = new SolidBrush(Color.Pink);
// or something fancier...
backBrush new LinearGradientBrush(bounds, Color.FromArgb(255, 200, 200), Color.FromArgb(128, 20, 20), LinearGradientMode.BackwardDiagonal); foreBrush new SolidBrush(Color.White);
}
} }
catch(Exception ex)
{ /* empty catch */ }
finally
{
// make sure the base class gets called to do the drawing with
// the possibly changed brushes

base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
}
} }
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
http://www.csharpfr.com/code.aspx?ID=11453

Jette un oeil a cette source, tu y trouveras peut-etre ton bonheur
Mx
Messages postés
37
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
4 mai 2006

thanks mx, je vais essayer de me debrouiller avec ca