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

Windows Forms Discussion :

DataTable : comment supprimer les champs vides ?


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut DataTable : comment supprimer les champs vides ?
    Bonsoir,

    Pour mon application, j'ai dans mon DataTable des cellules vides. Esthétiquement, ce n'est pas très joli et du coup j'aimerais savoir s'il y a une fonction qui supprime automatiquement les valeurs vide, et effectue le déplacement des cellules pour combler le vide?

    Je ne pense pas que ça existe, mais je préfère toujours demander on ne sait jamais

    Merci encore et bonne soirée,

    L.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    j'ai dans mon DataTable des cellules vides. Esthétiquement, ce n'est pas très joli
    Un DataTable n'est pas un composant visuel... tu l'affiches comment ? dans un DataGridView je suppose ?

    En plus, je ne comprends pas comment tu veux décaler des cellules

    - si tu décales les valeurs vers la gauche, elles ne seront plus dans la bonne colonne
    - si tu les décales vers le haut, elles ne seront plus sur la bonne ligne...

    Un DataTable, c'est une collection d'enregistrements. Ca n'a aucun sens de déplacer une valeur d'une ligne à une autre juste pour que ça soit plus joli... Par exemple, si ce sont des personnes avec des numéros de téléphone, et que tu as ces données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Nom        Tel
    --------------------------
    Joe        0123456789
    Jack       
    Jane       9876543210
    Si tu décales le numéro de Jane vers le haut pour "boucher le trou", tu l'affectes à Jack... ça n'a pas de sens

    Ou alors tu utilises juste la DataTable comme un tableau, sans que les données aient de relation entre elles ? Si c'est le cas, un DataTable n'est clairement pas le composant adapté... utilise plutôt un tableau à 2 dimensions

  3. #3
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    si tu parle de la fusion des cellules de ta datagridview regarde par là il y a un code que tu poura exploiter

    fusionner ta cellule vide (si elle l'est avec une autre)

    bon codage

  4. #4
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    @Tomlev:

    Effectivement, mes données n'ont pas de relation entre elles, c'est uniquement afin de pouvoir les affichers dans mon datagrid

    @nsanabi:

    Merci bien!

    Entre temps hier soir j'ai pu résoudre le problème en faisant un petit algorithme ^^

    Je posterais ce soir le code dès que je serais chez moi, ça peut toujours être utile à quelqu'un se genre de manipulation

    Merci encore!

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Leelith Voir le message
    Effectivement, mes données n'ont pas de relation entre elles, c'est uniquement afin de pouvoir les affichers dans mon datagrid
    OK, donc comme je le disais une DataTable n'est pas du tout adaptée... tu pourrais faire la même chose avec un tableau, et en plus l'algo serait plus simple...

  6. #6
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    On peut facilement afficher un tableau simple dans un datagrid WPF ?

    Sinon, le code est le suivant:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void deleteBlankCells()
            {
                for (int columns = 0; columns < result.Columns.Count; columns++)
                {
                    moveRows(columns);
                }
            }

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    private void moveRows(int columnIndex)
            {
     
                String [] tmp = new String[result.Rows.Count];
     
                // we extract all cells
                for (int rowIndex = 0; rowIndex < result.Rows.Count; rowIndex++)
                {
                    /*if (!result.Rows[rowIndex][columnIndex].ToString().Equals(""))
                    {*/
                        tmp[rowIndex] = result.Rows[rowIndex][columnIndex].ToString();
                    //}
                }
     
     
                // we then perform the replacement
                int indexOfAddedRows = 0;
                for (int rowIndex = 0; rowIndex < result.Rows.Count; rowIndex++)
                {
                    if (!tmp[rowIndex].Equals(""))
                    {
                        result.Rows[indexOfAddedRows][columnIndex] = tmp[rowIndex];
                        indexOfAddedRows++;
                    }
                }
     
                // we replace the rows that are now supposed to be empty by ""
                for (int rowsToDelete = indexOfAddedRows; rowsToDelete < result.Rows.Count; rowsToDelete++)
                {
                    result.Rows[rowsToDelete][columnIndex] = "";
                }
     
                // We delete the rows empty
                bool[] toBeDelete = new bool[result.Columns.Count];
                for (int rows = 0; rows < result.Rows.Count; rows++)
                {
                    // we perform a check for each row in every column
                    for (int columns = 0; columns < result.Columns.Count; columns++)
                    {
                        if (result.Rows[rows][result.Columns[columns].ColumnName].Equals(""))
                        {
                            toBeDelete[columns] = true;
                        }
                    }
     
                    // we check if we can delete
                    if (!toBeDelete.Contains(false))
                    {
                        result.Rows[rows].Delete();
                        // if deleted, we reset the indicator to false
                        for (int columns = 0; columns < result.Columns.Count; columns++)
                        {
                            toBeDelete[columns] = false;
                        }
                        // the total number of rows has decrease by 1
                        rows = rows - 1;
                    }
                    else
                    {
                        // we reset the indicator
                        if (toBeDelete.Contains(true))
                        {
                            for (int columns = 0; columns < result.Columns.Count; columns++)
                            {
                                toBeDelete[columns] = false;
                            }
                        }
                    }
                }
            }

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Leelith Voir le message
    On peut facilement afficher un tableau simple dans un datagrid WPF ?
    En fait j'ai un doute... avec un DataGridView Windows Forms je sais qu'on peut, mais en WPF j'ai pas essayé

  8. #8
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    faudrait que j'essaye rapidement, parce que si avec un bête tableau ça marche c'est mieux ^^ là je me suis bien fais chier pour déplacer mes cellules

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

Discussions similaires

  1. Doctrine: Comment tester les champs vides ?
    Par etoileweb dans le forum ORM
    Réponses: 6
    Dernier message: 02/08/2012, 01h55
  2. Comment supprimer les champs vides ?
    Par Christian_Bale dans le forum Cognos
    Réponses: 3
    Dernier message: 03/05/2012, 10h58
  3. [XL-2007] Comment supprimer les case vides d'une ligne?
    Par stephanech dans le forum Excel
    Réponses: 1
    Dernier message: 22/06/2010, 01h56
  4. MDX - comment supprimer les lignes vides ?
    Par _cece dans le forum Mondrian
    Réponses: 2
    Dernier message: 29/04/2010, 09h14
  5. Réponses: 2
    Dernier message: 04/05/2006, 14h10

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