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 :

Propriétés formatage DatagridView non prises en compte


Sujet :

C#

  1. #1
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut Propriétés formatage DatagridView non prises en compte
    Bonjour,

    J'ai un petit soucis sur le formatage d'une DatagridView lors de l'affichage d'une page (un UserControl pour être plus précis). Je charge des données mappées à une table de base de données (les données sont récupérées avec un Dataset).

    Je souhaite afficher ces données selon un certain format, c'est à dire cacher certaines colonnes (comme les ID), changer l'ordre d'affichage des colonnes, les titres des colonnes etc...

    Pour cela j'ai implémenté un petit bout de code que je lance lors de l'initialisation de ma page :

    Code : 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
            /// <summary>
            /// Initialize the log list with selected filter in the logs combobox.
            /// </summary>
            private void InitializeLogList()
            {
                // Link the grid with log combobox value
                this.UpdateLogDataGridFromCombobox();
     
                // Format the datagridview
                this.dgv_Logs.RowHeadersVisible = false;
                this.dgv_Logs.AllowUserToAddRows = false;
                this.dgv_Logs.AllowUserToDeleteRows = false;
                this.dgv_Logs.AllowUserToOrderColumns = true;
                this.dgv_Logs.AllowUserToResizeColumns = true;
                this.dgv_Logs.AllowUserToResizeRows = false;
                this.dgv_Logs.ReadOnly = true;
                this.dgv_Logs.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
     
                this.dgv_Logs.Columns["LOG_ID"].Visible = false;
                this.dgv_Logs.Columns["LOG_ID"].DisplayIndex = 0;
     
                this.dgv_Logs.Columns["IS_LAST_SESSION"].Visible = false;
                this.dgv_Logs.Columns["IS_LAST_SESSION"].DisplayIndex = 1;
     
                this.dgv_Logs.Columns["MODIFICATION_DATE"].Visible = false;
                this.dgv_Logs.Columns["MODIFICATION_DATE"].DisplayIndex = 2;
     
                this.dgv_Logs.Columns["CREATION_DATE"].Visible = true;
                this.dgv_Logs.Columns["CREATION_DATE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                this.dgv_Logs.Columns["CREATION_DATE"].DisplayIndex = 3;
                this.dgv_Logs.Columns["CREATION_DATE"].HeaderText = "Date création";
     
                this.dgv_Logs.Columns["LOG_TYPE"].Visible = true;
                this.dgv_Logs.Columns["LOG_TYPE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                this.dgv_Logs.Columns["LOG_TYPE"].DisplayIndex = 4;
                this.dgv_Logs.Columns["LOG_TYPE"].HeaderText = "Type";
     
                this.dgv_Logs.Columns["LOG_TEXT"].Visible = true;
                this.dgv_Logs.Columns["LOG_TEXT"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                this.dgv_Logs.Columns["LOG_TEXT"].DisplayIndex = 5;
                this.dgv_Logs.Columns["LOG_TEXT"].HeaderText = "Message";
     
                this.dgv_Logs.CellBorderStyle = DataGridViewCellBorderStyle.None;
            }
    Le soucis est que seule la propriété HeaderText est prise en compte, les autres propriétés appliquées sur les colonnes du DatagridView ne sont pas prises en comptes. Je ne vois pas comment faire pour faire fonctionner ce formatage. Si quelqu'un a une idée, une piste...

    Merci d'avance,
    Contrec
    Contrec

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par Contrec Voir le message
    J'ai un petit soucis sur le formatage d'une DatagridView lors de l'affichage d'une page (un UserControl pour être plus précis). Je charge des données mappées à une table de base de données (les données sont récupérées avec un Dataset).

    Je souhaite afficher ces données selon un certain format, c'est à dire cacher certaines colonnes (comme les ID), changer l'ordre d'affichage des colonnes, les titres des colonnes etc...
    S'agit-il d'un dataset fortement typé ? Si oui, je pense que ce serait plus simple de passer par le designer pour faire le formatage. Tu assignes la datatable du dataset comme source données de ton datagridview puis tu vas dans "modifier les colonnes" pour effectuer ton formatage colonne par colonne.
    N'oubliez pas le tag et

  3. #3
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Le soucis c'est que le binding qui est fait n'est pas un binding de la table telle quelle, je rajoute des colonnes d'autres tables, des jointures etc... c'est pour ça que je ne peux pas passer par le concepteur pour faire le maping et ensuite configurer mes colonnes.

    De pus le formatage des colonnes doit changer selon certains événement. Désolé j'avais oublié de mentionner ce détail.

    En gros ça affiche une liste de logs et selon le type de log sélectionné dans une combo, le formatage sera différent...
    Contrec

  4. #4
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par Contrec Voir le message
    Le soucis c'est que le binding qui est fait n'est pas un binding de la table telle quelle, je rajoute des colonnes d'autres tables, des jointures etc... c'est pour ça que je ne peux pas passer par le concepteur pour faire le maping et ensuite configurer mes colonnes.
    Si! Tu peux le faire. Tu peux créer un procédure stockée avec la requête sql issue de la jointure de toutes les tables concernées puis tu utilises la ps pour remplir la datatable. Ensuite tu passes par le designer pour effectuer les formatage requis. C'est même possible d'utiliser directement ton instruction sql avec les jointures pour remplir la datatable sans passer par une ps.

    Citation Envoyé par Contrec Voir le message
    De pus le formatage des colonnes doit changer selon certains événement. Désolé j'avais oublié de mentionner ce détail.

    En gros ça affiche une liste de logs et selon le type de log sélectionné dans une combo, le formatage sera différent...
    Ok, là je comprends que le formatage via le designer ne joue pas en ta faveur.
    N'oubliez pas le tag et

  5. #5
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    J'utilise le Designer de DataSet pour mapper mes tables.

    J'ai crée des requêtes pour la table des logs (celle que je veux afficher) avec des jointures et autre...

    Par contre dans le Designer du UserControl affichant les logs, je peux sélectionner seulement une table de mon Dataset comme source de la DataGridView, je n'ai pas vu comment on sélectionnait une requête précédemment crée dans le Designer de Dataset.

    Et pour le formatage des logs selon la ComboBox avec un événement CellFormating ça fonctionne bien.

    Reste juste le soucis du binding de la DataGridView avec une requête de mon DataSet (j'aimerai pouvoir utiliser ces requêtes et non refaire du SQL dans le Designer du UserControl).
    Contrec

  6. #6
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Si la table ne contient guére plus de 100 000 enregistrements, on peut :
    • faire un SELECT sans clause WHERE pour remplir le DataSet avec la table complète,
    • binder la DataTable au DataGridView via un BindingSource,
    • utiliser la propriété Filter du BindingSource pour n'afficher qu'une partie de la table.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Ah oui mais je ne veux pas intégrer de "requête" dans le Designer pour bien maîtriser mes données.

    En gros je préfère avoir toutes mes requêtes SQL centralisées dans mon DataSet puis les composants métiers qui exploitent les données à partir de ces requêtes.

    Cela veut dire :

    - Pas de SQL dans le code source.
    - Pas de filtre sur les données dans le code source.

    En gros tout dans le SQL du DataSet.

    Ça m'embête de te répondre ça alors que tu essaies de m'aider

    De plus je ne suis pas sûr que ce soit optimisé de passer par le Filtrer du BindingSource et même si je ne pense pas avoir 100 000 éléments, on ne sait jamais, autant s'affranchir de toute limite. C'est une table de log, ça peut aller vite --> Je suis très bavard en mode débug.

    Je continue à chercher du côté du Binding sur une requêtes du DataSet.
    Contrec

Discussions similaires

  1. [AC-2010] Propriété AllowEdits d'un formulaire non prise en compte
    Par nde1303 dans le forum IHM
    Réponses: 16
    Dernier message: 13/03/2015, 11h12
  2. Non prise en compte d'une propriété d'alignement
    Par laurentSc dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/01/2015, 04h16
  3. [Flex4] Propriétés de style non prises en compte
    Par Aleim dans le forum MXML
    Réponses: 5
    Dernier message: 12/08/2011, 13h20
  4. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57

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