Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lier un datagrid en ligne de detail d'un autre

    3 mai 2021 à 9:51:37

    Bonjour,

    Je cherche a mettre en detail d'une ligne d'un datagrid un autre datagrid.

    Voici le code xaml :

    <DataGrid IsReadOnly="True" AutoGenerateColumns="False" CanUserAddRows="False" Name="DgAgent">
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="agentId" Binding="{Binding agentId}" Width="*"/>
                                <DataGridTextColumn Header="pid" Binding="{Binding pid}" Width="*"/>
                                <DataGridTextColumn Header="Etat" Binding="{Binding state}" Width="*"/>
                            </DataGrid.Columns>
    
                            <DataGrid.RowDetailsTemplate>
                                <DataTemplate>
                                    <DataGrid IsReadOnly="True" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding agentSessions.AgentSession}">
                                        <DataGrid.Columns>
                                            <DataGridTextColumn Header="SessionId" Binding="{Binding SessionId}" Width="*"/>
                                            <DataGridTextColumn Header="SessionState" Binding="{Binding SessionState}" Width="*"/>
                                            <DataGridTextColumn Header="StartTime" Binding="{Binding StartTime}" Width="*"/>
                                            <DataGridTextColumn Header="EndTime" Binding="{Binding EndTime}" Width="*"/>
                                            <DataGridTextColumn Header="ThreadId" Binding="{Binding ThreadId}" Width="*"/>
                                            <DataGridTextColumn Header="ConnectionId" Binding="{Binding ConnectionId}" Width="*"/>
                                            <DataGridTextColumn Header="SessionExternalState" Binding="{Binding SessionExternalState}" Width="*"/>
                                            <DataGridTextColumn Header="SessionMemory" Binding="{Binding SessionMemory}" Width="*"/>                                        
                                        </DataGrid.Columns>
                                    </DataGrid>
                                </DataTemplate>
                            </DataGrid.RowDetailsTemplate>
                        </DataGrid>


    Et le code de l'ItemSource du Datagrid "maitre" :

    class Agents
        {
            public List<Agent> agents { get; set; }
        }
    
    class Agent
        {
            public string agentId { get; set; }
            public string pid { get; set; }
            public string state { get; set; }
            public AgentSessions agentSessions { get; set; }
        }
    
    class AgentSessions
        {
            public List<AgentSession> AgentSession { get; set; }
        }

    Le détail ne s'affiche, pourtant j'ai bien des AgentSession dans ma liste.

    Ou ai-je fais une erreur ?

    • Partager sur Facebook
    • Partager sur Twitter
      4 mai 2021 à 10:45:22

      Bonjour,

      Pour afficher le détail des lignes, il suffisait de rajouter la propriété RowDetailsVisibilityMode="Visible".

      Cependant, j'ai quand même un problème avec le deuxième datagrid, il est bugué.

      Les colonnes sont toutes petites (voir image en dessous), je ne peux pas redimensionner les colonnes....

      PS : La règles des 24h est juste débile..., Presque tout le monde sur le forum a vu mon précédent message, et la je rajoute des informations et si je modifie mon précédent message, personne le verra...

      EDIT : Je viens de me rendre compte, que je ne peux pas sélecter les lignes du datagrid principal, il ne se passe rien. Donc je suppose que le problème est ailleurs.

      -
      Edité par Matioso 4 mai 2021 à 11:39:45

      • Partager sur Facebook
      • Partager sur Twitter

      Lier un datagrid en ligne de detail d'un autre

      × 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