IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

DataGrid Edit cell replace('. ', ',')


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Apprentie
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentie

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Points : 16
    Points
    16
    Par défaut DataGrid Edit cell replace('. ', ',')
    Bonjour à tous,


    je travaille actuellement en WPF avec un DataGrid bindé avec une ObservableCollection dont toutes les colonnes sont en string.
    Dans ce DataGrid, j'ai notamment 2 colonnes qui sont "liées" (pas dans le sens bind..) : une colonne "valeur en byte" et une colonne "valeur physique".
    La colonne "physique" est éditable, mais pas la colonne "byte".
    Les valeurs physique peuvent avoir des décimales, donc est castée en Double pour les calculs.
    On change les valeurs en byte grâce à un simple produit en croix : "ValeurByte = ValeurPhysique*255/MaxPhysique;" où ValeurPhysique est casté en Double car sa forme String est sous forme de Double et MaxPhysique, qui est initialement déclaré en Double, est casté en int car la valeur en byte ne peut avoir de décimal et l'opérateur "/" renvoie un int si l'un des opérandes est un int.

    Le problème est que si l'utilisateur est anglais, il utilisera le '.' comme séparateur.
    J'ai donc tenté de modifier ce '.' en virgule lorsqu'il y a un évènement "CellEditEnding" avec un Replace('.' , ',').

    Mais.. Ça ne marche pas du tout! En mode debug, je vois qu'on passe bien par la ligne, mais elle n'est pas appliquée : le '.' ne devient pas ',' . Je n'ai aucune erreur sauf à la ligne où j'essaie de faire un calcul, ce qui est logique car le '.' est gardé lors du changement en double...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      private void grid_dataSet_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
            {
     
                DataGridRow row1 = e.Row;
                int row_index = ((System.Windows.Controls.DataGrid)sender).ItemContainerGenerator.IndexFromContainer(row1);
                dataSetParameters[row_index].physicalValue.Replace('.', ',');
     
                if (0 <= row_index && row_index <= 43)
                {
                    dataSetParameters[row_index].byteValue = (Convert.ToDouble(dataSetParameters[row_index].physicalValue) * 255 / MaxValue).ToString("###");
     
                }
             }

    J'espère m'être bien exprimée et que c'est compréhensible pour vous,

    Merci d'avance à ceux qui se penchent sur mon problème!

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonjour,

    Attention Replace() renvoie un string et du coup tu dois réaffecter ta valeur avec.

    Mais si tu veux un truc plus propre et général, autre que faire des Replace() a chaque valeur, regarde du coté de CultureInfo.InvariantCulture afin de définir si tu souhaites utiliser des "," ou des "." pour les nombres décimaux, etc ...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Apprentie
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprentie

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Grrrr!!! Mais oui, ça paraissait tellement évident que je n'y faisais pas attention...

    CultureInfo.InvariantCulture me semble intéressant pour la suite, je te remercie pour ton aide!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datagrid editable : contrôle de saisie
    Par tafkap dans le forum Flex
    Réponses: 1
    Dernier message: 19/11/2009, 13h05
  2. datagrid editable Itemrenderer avec checkbox
    Par Cdic83 dans le forum MXML
    Réponses: 3
    Dernier message: 18/05/2009, 23h00
  3. [DOM] Optimisation d'un datagrid editable
    Par doogy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/03/2009, 10h32
  4. [VB.NET 2003] DataGrid : edit = false VS. CellDblClick
    Par Kropernic dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/10/2007, 09h57
  5. CS3 Datagrid / editable / restriction
    Par bl.theus dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 27/07/2007, 22h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo