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 :

arrangement des colonnes dans datatable


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Par défaut arrangement des colonnes dans datatable
    Bonjour,
    j'ai inséré des colonnes dans ma datatable. Elles s'intègre automatiquement à à la fin du datatable. J'aimerai l'insérer à un endroit précis. pour cela , j'utilise le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int newIndice = cleanedData.Columns[i].Ordinal + 1;
    cleanedData.Columns[i].SetOrdinal(newIndice);
    Ensuite cette datatable alimente un datagridview. Mon problème est rien ne se change dans ma datatable. En analysant avec le debuggeur, la valeur datatable.column[indice].Ordinal ne se modifie jamais. Est ce vous avez une idée pourquoi setOrdinal ne modifie pas pa valeur d'Ordinal? Est ce le bon moyen d'inserer une colonne à un endroit precis?

    merci de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Par défaut
    La valeur de Ordinal est bel et bien changé par la méthode SetOrdinal.

    Et si c'est le bon moyen pour le faire? La question est plutôt, y a t'il un autre moyen de le faire?

    En fait, dans SetOrdinal, il y a vérification que le Ordinal est correct (> 0 et < Columns.Count) et après il va changer l'ordinal de toutes les collones (pour les mettre dans l'ordre). Ta colonne aura donc l'ordinal que tu lui a attribuer.

    Donc ce qu'il faut faire, c'est ca : (enfin je pense j'ai pas tester )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    columnTuVeutBouger.SetOrdinal(positionALaquelTuVeuxLaBouger)
    la le code que tu as donnée, en fait ca va prendre la ième colonne et la mettre à la position ( i + 1 ).

    J'espère avoir pu t'aider,
    Inarius

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    datatable.column[indice].Ordinal ne se modifie jamais
    Ca me parait logique, ce qui se modifie c'est : datatable.column["Le_Nom__de_colonne"].Ordinal.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Par défaut
    Pas forcement, car le datatable.column[indice] va te renvoyer une référence sur UNE datacolumn. Et c'est à cet DataColumn que tu change l'Ordinal. C'est un peu comme les requêtes UPDATE en SQL nan?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Par défaut
    Oui, j'insère une colonne qui devrait être par exemple à la 4eme colonne. Le but du code est fait de décaler d'une position toutes les colonnes à partir du 4eme colonne. Ensuite je deplace ma nouvelle colonne à la 4eme colonne.
    Mon problème est que rien ne se passe. les colonnes ne se deplacent pas et ma nouvelle colonne reste à la fin de la liste.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Par défaut
    Pourquoi ne fait tu pas juste un Column.SetOrdinal(4) ??
    Sans te précoccuper de décaler toutes les autres collones.

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Par défaut
    J'ai testé de changer uniquement l'ordinal de ma nouvelle colonne insérée mais la colonne ne se deplace pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int indice = int.Parse(Regex.Split(name, "\r\n")[0]);
    originalData.Columns.Add(name);
    originalData.Columns[name].SetOrdinal(indice);
    ma variable name contient l'indice et le nom de ma colonne. Mais avec ce code ma colonne reste en dernière position. Est ce vraiment le bon syntaxe pour l'utilisation de setordinal

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 03/05/2006, 13h15
  2. Regrouper des colonnes dans une ligne
    Par aturlan dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2006, 21h05
  3. Réponses: 1
    Dernier message: 22/12/2005, 09h03
  4. Affichage du titre des colonnes dans un DBGrid
    Par Debure dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/10/2005, 23h41
  5. Des colonnes dans un Treeview
    Par mr_langelot dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/07/2004, 09h52

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