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 Presentation Foundation Discussion :

Problème de binding sur un gridView WPF Toolkit


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 37
    Points
    37
    Par défaut Problème de binding sur un gridView WPF Toolkit
    Bonjour,
    J'ai un gridview WPF qui est bindé à une datatable

    Code XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <toolkit:DataGrid 
                        AlternationCount="2" 
                        Name="GridLog" 
                        Grid.Row="1" 
                        ItemsSource="{Binding}" 
                        ItemContainerStyle="{StaticResource CustomGridViewItemStyle}">
                    </toolkit:DataGrid>
    Code VB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GridLog.DataContext = loadFromDB() 'retourne un dataTable
    Jusque là aucun problème, tout fonctionne correctement.

    Maintenant je souhaite afficher certaines colonnes en passant par le XAML et la balise DataGridTextColumn

    Code XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <toolkit:DataGrid 
                        AlternationCount="2" 
                        Name="GridLog" 
                        Grid.Row="1" 
                        ItemsSource="{Binding}" 
                        ItemContainerStyle="{StaticResource CustomGridViewItemStyle}">
         <toolkit:DataGridTextColumn Header="Hit_id" Binding="{Binding Path=hit_id}"/>
                    </toolkit:DataGrid>
    Et là, patatrac!! J'ai l'erreur suivante :

    La collection Items doit être vide pour pouvoir utiliser ItemsSource.
    Ca crashe au niveau du VB au moment de l'assignation du GridLog.DataContext, et je ne sais vraiment pas pourquoi.

    Need help!

    Merci

  2. #2
    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
    Salut,

    Dans ton code, tu travailles sur les GridLog.Items (via GridLog.Items.Add, ou autre) ? Si c'est le cas évite, il faut travailler sur la collection que tu as assigné à ItemsSource uniquement.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Non, nulle part je fais appel à gridlog.items
    Tout passe par le DataContext. J'ai une méthode qui récupère les données en base et qui retourne un datatable. Ce datatable est ensuite assigné au Datacontext du gridLog et c'est tout.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Quand tu met ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <toolkit:DataGrid 
                        AutoGenerateColumns="False"
                        AlternationCount="2" 
                        Name="GridLog" 
                        Grid.Row="1" 
                        ItemsSource="{Binding}" 
                        ItemContainerStyle="{StaticResource CustomGridViewItemStyle}">
         <toolkit:DataGridTextColumn Header="Hit_id" Binding="{Binding Path=hit_id}"/>
                    </toolkit:DataGrid>
    La ligne suivante est insérée directement dans la collection d'item de la grid:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <toolkit:DataGridTextColumn Header="Hit_id" Binding="{Binding Path=hit_id}"/>
    Donc toi, tu ne le fais pas mais le moteur WPF fait pour toi le Items.Add.

    Pour éviter ton erreur, utilise ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <toolkit:DataGrid 
                        AlternationCount="2" 
                        Name="GridLog" 
                        Grid.Row="1" 
                        ItemsSource="{Binding}" 
                        ItemContainerStyle="{StaticResource CustomGridViewItemStyle}">
    <toolkit:DataGrid.Columns>
         <toolkit:DataGridTextColumn Header="Hit_id" Binding="{Binding Path=hit_id}"/>
    </toolkit:DataGrid.Columns>
                    </toolkit:DataGrid>
    A+

  5. #5
    Membre habitué Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 183
    Points
    183
    Par défaut
    Bonjour,

    dans ton xaml, si tu lui mets juste le DataGrid comme ça (il doit générer les colonnes tout seul par défaut, je crois), ça change quelque chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <toolkit:DataGrid 
                        AlternationCount="2" 
                        Name="GridLog" 
                        Grid.Row="1" 
                        ItemsSource="{Binding}" 
                        ItemContainerStyle="{StaticResource CustomGridViewItemStyle}" />
    En fait, je pensais à un caractère quelconque ou une balise perdue entre la balise d'ouverture et la balise de fermeture du DataGrid, parce qu'il l'ajouterai aux Items, justement.

    ha ben oui, tiens, en écrivant ça, je crois que je vois l'erreur : il faudrait peut-être qu'autour de tes définitions de colonnes, tu mettes une balise <toolkit:DataGrid.Columns>.
    Sinon, la <toolkit:DataGridTextColumn /> est considérée comme un élément dans la DataGrid.

    Edit : Damned ! Encore trop rapide Thomas ! ça fait deux fois que tu me fais le coup :)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Merci, ça fonctionne.

    Pour continuer, j'ai un autre petit souci. J'ai une colonne custom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <toolkit:DataGridTemplateColumn CanUserSort="True"  Header="IsError">
       <toolkit:DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
             <Image Width="16" Height="16" Margin="4" Source="{Binding Path=err_id, Converter={StaticResource ErrorToImage}}"/>
          </DataTemplate>
       </toolkit:DataGridTemplateColumn.CellTemplate>
    </toolkit:DataGridTemplateColumn>
    En fait je souhaite afficher une image en fonction de la valeur qui est affichée. Pour ça je passe par un Converter. Ca marche. Cependant, le CanUserSort = true n'a aucun effet. Je ne peux pas cliquer sur l'entête de colonne pour trier. Faut-il faire autre chose?

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Je crois me rapeller qu'il faut que tu lui indiques en fonction de quoi tu veux trier.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Ok c'est bon. Il fallait rajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SortMemberPath="err_id"
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Légende sur un graphique (WPF Toolkit)
    Par choupi12 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 25/01/2012, 17h36
  2. [BINDING] Problème de binding sur un AutoCompleteBox
    Par sorcer1 dans le forum Silverlight
    Réponses: 4
    Dernier message: 06/08/2010, 14h47
  3. Réponses: 1
    Dernier message: 19/02/2008, 14h55
  4. Réponses: 1
    Dernier message: 15/11/2007, 21h02
  5. [VB.NET] Problème de tri sur Datagrid/gridview multilingue
    Par crimsonPhantom dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/03/2006, 22h41

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