Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insérer des colonnes et des éléments dans une DataGrid

dans une application WPF

Sujet résolu
    2 février 2012 à 19:41:03

    Bonsoir à tous,

    voilà, mon "souci" est simple : pour un projet, je fais un programme en WPF et en C#. J'ai inséré une DataGrid dans une de mes fenêtres mais le souci, et ça va sûrement vous paraître très gros, mais je ne vois pas comment ajouter des lignes et colonnes et y insérer des éléments.

    J'ai conscience qu'il y a énormément de documentation sur le net, mais pour la première fois depuis que je développe, j'ai vraiment du mal à comprendre le principe des DataGrid. Je pensais que c'était aussi simple que des fonctions qui ajoutent des colonnes ou des lignes et qui y insèrent quelque chose, mais là visiblement pas.

    Et je n'ai rien trouvé qui explique concrètement pourquoi tel code est utilisé, mais que des bouts d'exemple, et ça ne m'avance pas beaucoup.

    Auriez-vous des liens où c'est vraiment expliqué ? Pour des personnes sachant coder mais n'ayant jamais utilisé de DataGrid.
    Ou si quelqu'un pouvait m'éclaircir un minimum.
    Je préfère vous prévenir avant que j'ai passé quelques heures à chercher, mais comme je l'ai dit, je n'ai trouvé que des exemples de codes, mais pas ou très peu expliqué et justifié.

    En vous remerciant d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      2 février 2012 à 22:26:39

      Salut,

      Si c'Est en WPF, c'est dans le XAML que ça se fait :

      <DataGrid.Columns>
         <DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn>
         <DataGridTextColumn Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn>
         <DataGridTextColumn Header="Contact Last Name" Binding="{Binding LastName}"></DataGridTextColumn>
      </DataGrid.Columns>
      


      Le Binding, c'Est une propriété publique disponible dans ta classe. ou le Nom de la colonne si tu utilise des DataTable.

      Pour ajouter une ligne, suffit de jouer avec l'objet qui est le DataSource de ton grid. Si c'Est un DataTable, tu y ajoute directement le nouvel élément. Si c'est une liste, même chose.

      Je te laisse chercher un peu pour savoir comment ça se fait de ce côté là, mais je pense que ça va déjà être beaucoup plus clair pour toi comme ça. N'hésite pas à chercher sur la MSDN aussi. C'est une ressource TRÈS fiable ;) .
      • Partager sur Facebook
      • Partager sur Twitter
        4 février 2012 à 19:12:53

        Mais la partie que tu as expliquée, avec les balises "DataGrid.Columns", se place à quel endroit précisément ?

        Car voilà le code que j'ai dans la balise Grid :
        <Grid>
                <DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="24,49,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />
                <Button Content="Quitter" Height="23" HorizontalAlignment="Left" Margin="206,283,0,0" Name="btnQuitter" VerticalAlignment="Top" Width="75" Click="btnQuitter_Click" />
                <Grid Height="100" HorizontalAlignment="Left" Margin="213,189,0,0" Name="grid1" VerticalAlignment="Top" Width="200" />
            </Grid>
        
        • Partager sur Facebook
        • Partager sur Twitter
          4 février 2012 à 19:18:25

          Dans DataGrid. (Il me semble)

          <Grid>
                  <DataGrid AutoGenerateColumns="False" Height="200" 
                            HorizontalAlignment="Left" Margin="24,49,0,0" 
                            Name="dataGrid1" VerticalAlignment="Top" 
                            Width="200">
                     <DataGrid.Columns>
                        <DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Contact Last Name" Binding="{Binding LastName}"></DataGridTextColumn>
                     </DataGrid.Columns>
                  </DataGrid>
                  <Button Content="Quitter" Height="23" HorizontalAlignment="Left" Margin="206,283,0,0" Name="btnQuitter" VerticalAlignment="Top" Width="75" Click="btnQuitter_Click" />
                  <Grid Height="100" HorizontalAlignment="Left" Margin="213,189,0,0" Name="grid1" VerticalAlignment="Top" Width="200" />
          
              </Grid>
          
          • Partager sur Facebook
          • Partager sur Twitter
            4 février 2012 à 22:47:21

            J'ai ces 2 erreurs :

            Erreur de build inconnue, 'MC3015 : la propriété jointe 'DataGrid.Columns' n'est pas définie sur 'Grid' ou l'une de ses classes de base.'

            "La propriété pouvant être attachée 'Columns' est introuvable dans le type 'DataGrid'."

            Mais je vois pas par quoi remplacer la propriété Columns ..

            Voilà la totalité de mon fichier xaml, ça sera plus simple :
            <Window x:Class="SqlManager2012_Wpf.WindowAfficherUtilisateur" Name="This"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
                    Title="WindowAfficherUtilisateur" Height="351" Width="313" Loaded="Window_Loaded" ResizeMode="CanMinimize">
                <Grid>
                    <Grid Height="100" HorizontalAlignment="Left" Margin="213,189,0,0" Name="grid1" VerticalAlignment="Top" Width="200" />
                    <dg:DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="24,49,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />
                    <dg:DataGrid.Columns>
                        <DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Contact Last Name" Binding="{Binding LastName}"></DataGridTextColumn>
                    </dg:DataGrid.Columns>
                            <Button Content="Quitter" Height="23" HorizontalAlignment="Left" Margin="206,283,0,0" Name="btnQuitter" VerticalAlignment="Top" Width="75" Click="btnQuitter_Click" />
                </Grid>
            </Window>
            
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              4 février 2012 à 23:07:11

              Il faut les placer *à l'intérieur* du tag DataGrid. Pas à côté.
              • Partager sur Facebook
              • Partager sur Twitter
                4 février 2012 à 23:11:26

                De cette façon ?

                <Window x:Class="SqlManager2012_Wpf.WindowAfficherUtilisateur" Name="This"
                        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit"
                        Title="WindowAfficherUtilisateur" Height="351" Width="313" Loaded="Window_Loaded" ResizeMode="CanMinimize">
                    <Grid>
                        <Grid Height="100" HorizontalAlignment="Left" Margin="213,189,0,0" Name="grid1" VerticalAlignment="Top" Width="200" />
                        <dg:DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="24,49,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200">
                        <dg:DataGrid.Columns>
                            <DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn>
                            <DataGridTextColumn Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn>
                            <DataGridTextColumn Header="Contact Last Name" Binding="{Binding LastName}"></DataGridTextColumn>
                        </dg:DataGrid.Columns>
                        </dg:DataGrid>
                                <Button Content="Quitter" Height="23" HorizontalAlignment="Left" Margin="206,283,0,0" Name="btnQuitter" VerticalAlignment="Top" Width="75" Click="btnQuitter_Click" />
                    </Grid>
                </Window>
                


                Car là j'ai 3 fois l'erreur :

                Une valeur de type 'DataGridTextColumn' ne peut pas être ajoutée à une collection ou un dictionnaire de type 'ObservableCollection`1'.

                Edit : c'est bon j'ai réussi ! Il fallait simplement ajouter les "dg:" dans les balises.
                Je mets en résolu, mais je reviendrai si jamais j'ai encore un souci auquel je n'aurai vraiment pas trouvé de solution.

                :D
                • Partager sur Facebook
                • Partager sur Twitter

                Insérer des colonnes et des éléments dans une DataGrid

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown