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 :

rendre invisible une colonne de dataGrid et la remplir par un label


Sujet :

Windows Forms

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut rendre invisible une colonne de dataGrid et la remplir par un label
    Bonjour,

    Voila j'ai un dataGrid qui se remplit de la manière suivante :
    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
    string RelationClientele = ("SELECT RC_NUMINTER as numinter, RC_DHRELCL as DateHeure, RC_CNURELCL as Contenu, RC_TELCTACT as Tel, RC_MOYCTACT as MoyenContact FROM RELATION_CLIENTELE WHERE RC_NUMINTER = '" + NumInter.Text + "'");
    			connection = new SqlConnection("Data Source=SNCK96400031;Initial Catalog=DistribInfo;Integrated Security=SSPI");
    			connection.Open();
    			try
    			{
    				SqlDataAdapter dataAdapter1 = new SqlDataAdapter(RelationClientele, connection);
    				dataAdapter1.Fill(ds1,"RelationClientele");
    				dataGrid2.DataSource = ds1;
    				dataGrid2.DataMember = "RelationClientele";
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    			finally
    			{
    				connection.Close();
    			}
    J'aimerais que la colonne numinter soit invisible et qu'elle se remplisse à l'aide d'un résultat d'un label.

    Comment puis-je faire??

    Merci d'avance!!

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    quelle est la difficulté pour toi?
    il suffit de mettre la propriété à visible=false et strictement rien de plus.
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Louis-Guillaume Morand
    Merci pour ta réponse.

    Ben le problème c'est que vu que c'est qu'une colonne je vois pas comment faire pour désigner la colonne que je souhaite.

    Merci d'avance!!

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    par son nom?
    par son index?
    c'est 100% pareil que pour une colonne visible

    que la colonne soit là ou non pour l'utilisateur, pour ton programme elle est bien là, à sa place.
    à toi de bien la placer et ne plus la bouger (si tu y accèdes par son index)
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à Louis-Guillaume Morand
    Ok.
    Ben normalement la colonne reste en première position.

    O fet dans le première commentaire que j'ai fais de cette discussion j'ai mit la manière de comment je remplis mon dataGrid.

    Mon problème c'est que je vois pas trop comment faire pour dire tel colonne ....

    Cordialement.

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par loic20h28 Voir le message
    Ok.
    Ben normalement la colonne reste en première position.

    O fet dans le première commentaire que j'ai fais de cette discussion j'ai mit la manière de comment je remplis mon dataGrid.

    Mon problème c'est que je vois pas trop comment faire pour dire tel colonne ....

    Cordialement.
    bah oui, elle reste en premiere position.
    bah pour la colonne, c'est comme je l'ai dis, via son index
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datagrid2.Columns[0] //voilà ta colonne
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse Louis-Guillaume Morand
    Ok mais le problème et c'est bien pour ça que je ne trouvé pas c'est que "System.Windows.Forms.DataGrid ne contient pas de définition pour 'Columns'"

    donc comment dois-je fair epour pouvoir utiliser 'Columns'?? !!

    Cordialement.

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Je me pose une question : est-ce possible avec un DataGrid ?

    On pense toujours avec le DataGridView qui est un composant plus complet.

    Citation Envoyé par msdn
    Le contrôle DataGridView vous permet de travailler avec les composants de grille individuels de plusieurs façons différentes. Par exemple, vous pouvez figer des lignes et des colonnes pour les empêcher de défiler ; masquer des lignes, des colonnes et des en-têtes ; modifier la manière dont les lignes, les colonnes et les tailles sont ajustées ; modifier la façon dont les utilisateurs effectuent des sélections ; et fournir des info-bulles et des menus contextuels pour les différentes cellules, lignes et colonnes.
    Ce qui voudrait dire que le DataGrid ne permet pas de faire ce que tu veux...

    cf. http://msdn2.microsoft.com/fr-fr/lib...28(VS.80).aspx

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à binoo
    Merde c'est pas cool ça!!

    Donc je ne peux pas faire en sorte de ne pas voir la colonne.

    Mais si je comprend bien c'est pas possible non plus de faire en sorte que lorsque j'ajoute une ligne, ben la colonne se remplisse toute seule grace au résultat d'un label!!??

    Cordialement.

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    En fait ça n'a pas l'air possible par défaut... Est-ce implémentable ? il faut voir... je ne sais pas...

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à binoo
    Qu'entend tu par "implémentable"??

    Cordialement.

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Ba peut être est-il possible de te faire ton propre contrôle MonDataGrid héritant du contrôle DataGrid. Et pour ton propre contrôle, tu implémenterais (coderais) cette fonctionnalité.

    Après il y a peut-être aussi des moyens de contournement...

    En cherchant rapidement sur le net, j'ai vu que la propriété TableStyles du DataGrid pourrait t'aider à faire ce que tu veux :
    - une idée mettre la largeur de ta colonne à 0 avec cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void SetColWidth( DataGridTableStyle tableStyle, int colNum, int width )
    {
      try
      {
        tableStyle.GridColumnStyles[ colNum ].Width = width;
        tableStyle.DataGrid.Refresh();
      }
      catch{} //empty catch .. do nothing
    }
    Voici ce lien qui m'a mené a ce code : http://windowsclient.net/blogs/faqs/...d/default.aspx. Tu trouveras peut-être mieux parmi les autres posts...

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Réponse à binoo
    Je viens d'essayer le code mais rien ne se passe c'est à dire que la colonne est toujours présente en entière....

    Je pens eque ça vient du code c'est à dire qu'il n'y a pas un endroit ou on indique la taille de la colonne.

    Merci d'avance!!

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Euh... et width dans les paramètres de la fonction c'est quoi ?

    Après j'ai pas testé mais ça donnerait un truc dans le style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataGridTableStyle tableStyle = dataGrid1.TableStyles[ 0 ];
    SetColWidth( tableStyle, 1, 0 );

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut comment tu crée ton datagridview?
    tu crée ton datagridview en mode design?
    si oui, je crois tu n'as rien précisé pour les colonnes.
    SELECT RC_NUMINTER as numinter, RC_DHRELCL as DateHeure, RC_CNURELCL as Contenu, RC_TELCTACT as Tel, RC_MOYCTACT as MoyenContact
    j'ai utilisé les noms de colonnes de ta requête select pour réaliser l'exemple (en fichier joint) jettes-y un coup d'œil et dis moi si ça marche toujours pas.
    en fait, ce qui se passe quand tu crée ton datagridview en mode design et tu précise rien sur les colonnes après tu fais juste datagridview.datasource=....
    les colonnes sont créées automatiquement et portent les noms qui viennent de ta requête.
    Images attachées Images attachées
    • Type de fichier : pdf Doc.pdf (144,7 Ko, 91 affichages)

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à missokhay
    Bonjour,

    Merci pour ta réponse.

    Je travail sous Visual Studio 2003.

    Pour mon DataGrid, j'ai fait glisser le composant sur le formulaire mais pour le remplir j'ai fait de la manière suivante :
    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
    string RelationClientele = ("SELECT RC_NUMINTER as numinter, RC_DHRELCL as DateHeure, RC_CNURELCL as Contenu, RC_TELCTACT as Tel, RC_MOYCTACT as MoyenContact FROM RELATION_CLIENTELE WHERE RC_NUMINTER = '" + NumInter.Text + "'");
    			connection = new SqlConnection("Data Source=SNCK96400031;Initial Catalog=DistribInfo;Integrated Security=SSPI");
    			connection.Open();
    			try
    			{
    				SqlDataAdapter dataAdapter1 = new SqlDataAdapter(RelationClientele, connection);
    				dataAdapter1.Fill(ds1,"RelationClientele");
    				dataGrid2.DataSource = ds1;
    				dataGrid2.DataMember = "RelationClientele";
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    			finally
    			{
    				connection.Close();
    			}

    J'espère que cela répond à ta question. Je vais regarder ton document joint ce soir si j'ai le temps.

    Cordialement.

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à missokhay
    Bonjour,

    Voila j'ai regardé ton PDF missokhay mais vu que moi c'est un dataGrid ben je n'ai pas de case "visible" à cocher ou pas.

    Donc sinon je la laisserai bien visible mais il faudrait que cette colonne puisse se remplir automatiquement dés que la deuxième colonne se remplit.

    Ce dataGrid permet d'écrir les relations clientèle de l'entreprise pour une intervention.
    Donc la fenêtre est composé d'un label correspondant au numInter. Le dataGrid se remplit manuellement. Je souhaiterais que si la deuxième colonne est rempli alors la première affiche le numInter correspondant au label se situant plus haut dans la fenêtre.

    Merci d'avance!!

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    Bonjour tout le monde,

    me revoila sur ce problème que j'ai toujorus pas réglé.

    Voici le code que j'ai :
    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
    public void SetColWidth(DataGridTableStyle tableStyle, int colNum, int width)
    		{
    			try
    			{
    				tableStyle.GridColumnStyles[colNum].Width = width;
    				tableStyle.DataGrid.Refresh();
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    		} 
     
     
     
    private void NumInter_TextChanged(object sender, System.EventArgs e)
    		{
    string RelationClientele = ("SELECT RC_NUMINTER as numinter, RC_DHRELCL as DateHeure, RC_CNURELCL as Contenu, RC_TELCTACT as Tel, RC_MOYCTACT as MoyenContact FROM RELATION_CLIENTELE WHERE RC_NUMINTER = '" + NumIntervention.Text + "'");
    			connection.Open();
    			try
    			{
    				SqlDataAdapter dataAdapter1 = new SqlDataAdapter(RelationClientele, connection);
    				dataAdapter1.Fill(dt1);
    				dataGrid2.DataMember = "RelationClientele";
    				dataGrid2.DataSource = dt1;
     
    				DataGridTableStyle tableStyle = dataGrid2.TableStyles[0];
    				SetColWidth(tableStyle, 1, 0);
     
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    			finally
    			{
    				connection.Close();
    			}
    Mais lorsque j'applique mon programme voici l'erreur qu'il me génére :
    System.ArgumentOutOfRangeException: L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.

    Nom du paramètre*: index

    at System.Collections.ArrayList.get_Item(Int32 index)

    at System.Windows.Forms.GridTableStylesCollection.get_Item(Int32 index)

    at SuiviClient_DistribInfo.SuiviIntervention.NumInter_TextChanged(Object sender, EventArgs e) in c:\documents and settings\fils\mes documents\visual studio projects\suiviclient_distribinfo\suiviintervention.cs:line 1031
    D'ou provient mon problème d'aprés vous??

    Que puis-je faire pour le régler??

    Merci d'avance!!

  19. #19
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    ca veut dire que le paremetre que tu passes à ta methode est mauvais.
    si tu passes -1 ca ne marche pas car tu utilises ce parametre en index de liste si je comprends bien.
    ou alors 54 alors que ta liste à une taille de 10.

  20. #20
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à gregorylepacha
    Merci pour ta réponse,

    Suis d'accord avec toi mais je n'ai pas mis de -1 dans el code, c'est ca que je comprend pas!!??!!

    Es-ce que ca peut venir du fait que la colonne n'est pas vide??

    Je vois pas ou es le problème!!

    Cordialement!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Rendre invisible une colonne d'un JTable
    Par casho dans le forum Composants
    Réponses: 2
    Dernier message: 22/12/2009, 11h54
  2. Réponses: 9
    Dernier message: 19/02/2008, 17h50
  3. Comment rendre invisible une colonne de datagridview
    Par frederix quest dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/05/2007, 18h12
  4. Rendre invisible une colonne d'un TStringGrid
    Par Delphi-ne dans le forum Delphi
    Réponses: 3
    Dernier message: 04/01/2007, 13h39
  5. Réponses: 10
    Dernier message: 19/05/2004, 15h44

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