VB.NET- Affecter style de colonne à DataGrig

Résolu
Bonjour,

Je suis actuellement sur un programme VB.NET pour PDA (Windows CE 6).

J'ai une DataGrid contenant 3 champs : EAN, Poids et Pièce.
Mon remplissage se passe sans problème avec les données retournées depuis un WebService.

Mon problème étant que je n'arrive pas à affecter des styles à mes colonnes.
En effet, je créer 3 styles avec des en-têtes et des longueurs spécifiques mais ceci n'est pas mise à jour et il m'affiche toujours les entêtes traditionnels sans me corriger les longueurs des champs.

J'espère avoir été clair, voici le code :

' Affectation des données dans la DataGrid
            c_dtg_pqt.DataSource = tt900_pfl

            Dim tableStyle As New DataGridTableStyle()
            tableStyle.MappingName = "Paquets"

            'Discontinued.
            Dim column As New DataGridTextBoxColumn()
            column.MappingName = ""
            column.HeaderText = ""
            column.Width = 30
            'tableStyle.GridColumnStyles.Add(column)

            ' EAN
            column = New DataGridTextBoxColumn()
            column.MappingName = "EAN"
            column.HeaderText = "EAN"
            column.Width = 30
            tableStyle.GridColumnStyles.Add(column)

            ' Poids
            column = New DataGridTextBoxColumn()
            column.MappingName = "Poids"
            column.HeaderText = "Poids"
            column.Width = 140
            tableStyle.GridColumnStyles.Add(column)

            ' Pièce
            column = New DataGridTextBoxColumn()
            column.MappingName = "Pièce"
            column.HeaderText = "Pièce"
            tableStyle.GridColumnStyles.Add(column)

            ' Ajouter le style à la datagrid
            c_dtg_pqt.TableStyles.Add(tableStyle)


Auriez-vous une idée s'il vous plait ?
Je sèche complêtement....

Merci d'avance.

4 réponses

  1. Slt vu comme sa et parce que je suis fatigue fait un Update ou Refresh pour voir je regarderais sa de plus pret demain
    1. Après mure réflexion ( plutot une grande tasse de café :) ) regarde si le mappingname correspond bien au tablename de ton datatable
      1. Bonjour Nico,

        J'ai exploré ton idée concernant les MappingName de mon objet column. J'ai essayé de lui affecter à chaque fois le MappingName de ma TableStyle, c'est à dire 'Paquets'. Malheureusement cela ne résoud rien et m'affiche au contraire l'exception "Value does not fall within the expected range".

        Par contre, je n'ai pas de DataTable. Cela viendrait-il de ça ? Aurais-tu un exemple d'utilisation s'il te plait ?

        Merci d'avance.
        1. Eurêka !

          J'ai trouvé la solution en explorant ton histoire de DataTable.
          En effet, j'ai désormais créée une DataTable que j'affecte à ma DataGrid avec un style de colonne : C'est Niquel !

          Voici le code pour mieux comprendre :

          Dim dt_table As Data.DataTable = New Data.DataTable("Paquets")
                      dt_table.Columns.Add("EAN", GetType(String))
                      dt_table.Columns.Add("Poids", GetType(String))
                      dt_table.Columns.Add("Pièce", GetType(Integer))
          
                      For i = 0 To i_nbpqt - 1
                          dt_table.Rows.Add(tt900_pfl(i).cdean.Trim, FormatNumber(tt900_pfl(i).poids, 3), tt900_pfl(i).nbpi)
                      Next
          
                      Dim tableStyle As New DataGridTableStyle()
                      Dim column As New DataGridTextBoxColumn()
          
                      tableStyle.MappingName = "Paquets"
                      
                      ' EAN
                      column = New DataGridTextBoxColumn()
                      column.MappingName = "EAN"
                      column.HeaderText = "EAN du Paquet"
                      column.Width = 100
                      tableStyle.GridColumnStyles.Add(column)
          
                      ' Poids
                      column = New DataGridTextBoxColumn()
                      column.MappingName = "Poids"
                      column.HeaderText = "Poids (en Kg)"
                      column.Width = 80
                      tableStyle.GridColumnStyles.Add(column)
          
                      ' Pièce
                      column = New DataGridTextBoxColumn()
                      column.MappingName = "Pièce"
                      column.HeaderText = "Pièce"
                      column.Width = 46
                      tableStyle.GridColumnStyles.Add(column)
          
                      ' Ajouter le style à la datagrid
                      c_dtg_pqt.TableStyles.Add(tableStyle)
          
                      ' Affectation des données dans la DataGrid
                      c_dtg_pqt.DataSource = dt_table


          Un grand merci en tout cas pour ton intervention ;-)
          Bonne journée.