Datagrid et formatage

Résolu
calimer22 Messages postés 10 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 8 mars 2007 - 21 févr. 2007 à 17:25
calimer22 Messages postés 10 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 8 mars 2007 - 8 mars 2007 à 10:58
Bonjour,

Ma question concerne le formatage des données dans un datagrid.
J'ai une solution qui permet de formater les colonnes entiéres facilement en créant un style et en l'associant à la colonne par exemple

// Declaration
System.Windows.Forms.DataGridViewCellStyle dgvCellStyledecimal = new System.Windows.Forms.DataGridViewCellStyle();

// Formatage de base Windows en décimal avec 2 chiffres aprés la virgule
dgvCellStyledecimal.Format = "N2";
// Le contenu de la cellule se positionnera au milieu
dgvCellStyledecimal.Alignment = DataGridViewContentAlignment.MiddleRight;
// les valeurs nulles seront remplcées par
dgvCellStyledecimal.NullValue = null;

Puis il faut associer ce style à la colonne de la façon suivante:
// DtGV est mon DataGridView
DtGV.Columns[i].DefaultCellStyle = dgvCellStyledecimal;

Cette solution est bien mais elle est perturbante pour les utilisateurs car comme il y a un espace entre les centaines et les milliers les données ne sont pas exploitable directement dans Excel

J'ai donc commencé à faire des modifications au niveau des paramétres regionaux pour enlever cet espace et miracle CA MARCHE

// Copie des paramétres regionaux en cours
CultureInfo TotoCulture = new CultureInfo("fr-FR", true);
// Modifications
// Largeur du groupe à 0
TotoCulture.NumberFormat.NumberGroupSizes = new int[1] { 0 };
// Nombre de chiffre aprés la "virgule"
TotoCulture.NumberFormat.NumberDecimalDigits = 2;
TotoCulture.NumberFormat.CurrencyDecimalDigits = 2;
// Remplacement de la virgule par p
TotoCulture.NumberFormat.NumberDecimalSeparator = "p";

J'arrive a associer cette culture à mon style
dgvCellStyledecimal.FormatProvider = (IFormatProvider)TotoCulture;

jusque là tout va bien mais le problème arrive lorsque je veux associer ce style  à la colonne j'utilise toujours la même chose
DtGV.Columns[i].DefaultCellStyle = dgvCellStyledecimal;

mais là le "p" pour séparer les éléments est bien pris
mais j'ai tous mes chiffres aprés !!!!

Le problème s'est donc déplacé d'un espace de trop entre les groupes de chiffres vers les chiffres aprés la virgule qui ne sont pas masqués !!

Quelqu'un aurait une idée ?
 

1 réponse

calimer22 Messages postés 10 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 8 mars 2007
8 mars 2007 à 10:58
Salut,

je repasse sur mon post pour mettre la solution que j'ai utilisé.
Au lieu de me prendre la tête avec les paramétres régionaux je me suis dis que j'allais faire du bourrin et simpliste du coup au lieu d'utiliser les formatages windows  :
dgvCellStyledecimal.Format = "N2";

j'ai utilisé la formule suivante
dgvCellStyledecimal.Format = "#####.##";

Cette formule permet de mettre 2 chiffres aprés la virgule et de ne pas avoir d'espace entre les centaines et les milliers

si on voulait séparer chaque chiffre par toto on aurait écrit
dgvCellStyledecimal.Format = "#toto#toto#toto#toto#.#toto#";

si on avait voulu mettre 4 chiffres aprés la virgule on aurait marqué
dgvCellStyledecimal.Format = "#####.####";

Parfois il n'est pas nécessaire de chercher midi à quatorze heures ....

@+
3
Rejoignez-nous