none
Planning dans un DataGridView RRS feed

  • Question

  • Bonjour

    Je dois, à partir d'une requête sur plusieurs tables SQL Server, présenter un planning dans une grille sur la totalité du formulaire Windows.

    La grille est faite pour présenter le planning du mois en cours. La grille n'est pas accessible en modification. Toute modification se faisant à partir d’un menu contextuel en fonction de la cellule sélectionnée.

    Le résultat de la requête : pour un agent, j’ai autant de ligne qu’il y a de jour dans le mois. Chaque ligne représentant une situation de l’agent pour le jour en question. Je n’ai pas de problème pour la requête.

    Brièvement,  le tableau se présenterai comme ci-dessous :

    MAI

    2008

    Sam

    01

    Dim

    02

    Lun

    03

    Sam

    29

    Dim

    30

    Lun

    31

    MARTIN Simon

    RH

    RH

    M

    S

    S

    M

    DUPONT Céline

    RH

    RH

    S

    M

    M

    RH

    DURAND

    Félix

    M

    M

    S

    RH

    RH

    S

    PAYET

    France

    N

    N

    RC

    RC

    RC

    N

     

    Ce serait intéressant d’avoir, les 3 jours précédents avant le 1<sup>er</sup> du mois, ainsi que au moins 3 jours du mois suivant, après le dernier jour du mois. Ce qui permet visuellement  de visualiser la continuité du planning entre chaque mois.

    Suivant les codes temps (RH, M, S, N, etc.….) La couleur de la police du code temps change suivant une valeur numérique stocké dans une des tables de SQL Server.

    Ensuite, je dois pouvoir gérer un bouton Suivant et Précédent pour les mois passés ou les mois futurs.

     

    Mon soucis, c’est ayant commencé depuis très peu de temps VB 2008, je ne maitrise pas encore suffisamment pour voir comment réaliser ce tableau.

    -      Créer les colonnes de façon dynamique

    -      Y affecter les données

    Remerciements anticipés pour toute aide.

     


    Jean PERIGNY, Développeur
    samedi 8 mai 2010 07:05

Réponses

  • Bonjour,

    Le mieux est de ne pas lier votre DataGridView à une source de données (cf. propriété DataSource, cela vous permet un contrôle total de votre DataGridView).

    Pour créer des colonnes de manière dynamique :

    Dim colonne As DataGridViewTextBoxColumn
    
    colonne = New DataGridViewColumn()
    Me.DataGridView1.Columns.Add(colonne)

    Pour affecter des données :

    Me.DataGridView1.Rows(<indexLigne>).Cells(<indexColonne>).Value = "RH"

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    • Marqué comme réponse jperigny lundi 10 mai 2010 03:26
    dimanche 9 mai 2010 15:06
    Modérateur
  • Bonsoir,

    Oui, n'oubliez pas de définir le nom que vous générée à la colonne crée via la propriété Name :

    myColum.Name = myColumn

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    • Marqué comme réponse jperigny lundi 10 mai 2010 03:27
    dimanche 9 mai 2010 17:40
    Modérateur

Toutes les réponses

  • Bonjour,

    Le mieux est de ne pas lier votre DataGridView à une source de données (cf. propriété DataSource, cela vous permet un contrôle total de votre DataGridView).

    Pour créer des colonnes de manière dynamique :

    Dim colonne As DataGridViewTextBoxColumn
    
    colonne = New DataGridViewColumn()
    Me.DataGridView1.Columns.Add(colonne)

    Pour affecter des données :

    Me.DataGridView1.Rows(<indexLigne>).Cells(<indexColonne>).Value = "RH"

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    • Marqué comme réponse jperigny lundi 10 mai 2010 03:26
    dimanche 9 mai 2010 15:06
    Modérateur
  • Bonjour,

    merci pour ces quelques lignes, j'en prend bonne note.

    Question : est-ce que en VB je peux ecrire quelques chose comme cela?

    Dim myColumn as String

    Dim myIndex as Integer

    For myIndex=1 to 30

    myColumn = "Day_" & cStr(myIndex)

    Dim myColum as DataGridViewtextBoxColumn

    myColum = new DataGridViewColumn()

    Next

    remerciements,


    Jean PERIGNY, Développeur
    dimanche 9 mai 2010 17:00
  • Bonsoir,

    Oui, n'oubliez pas de définir le nom que vous générée à la colonne crée via la propriété Name :

    myColum.Name = myColumn

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    • Marqué comme réponse jperigny lundi 10 mai 2010 03:27
    dimanche 9 mai 2010 17:40
    Modérateur
  • Bonjour,

    Mes remerciements.


    Jean PERIGNY, Développeur
    lundi 10 mai 2010 03:28