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

C# Discussion :

Refresh de ObservableCollection


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut Refresh de ObservableCollection
    Bonjour,

    Je cherche a effectuer le refresh d'une UI lorsqu'un élément de celle-ci change.

    J'ai donc un Grid défini de la manière suivante : (infragistic)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     <ig:XamGrid
                        ItemsSource="{Binding ListeOrdreDeMissionASigner}" 
                         >
                            <ig:XamGrid.Columns>
     
                                <ig:TextColumn Key="OrdreDeMission.Client.Nom" HeaderText="Client" CellStyle="{StaticResource CellControlClientStyle}" IsSorted="Ascending"/>
                                <ig:TextColumn Key="OrdreDeMission.Affaire.Libelle" HeaderText="Projet"/>   
     
                                <ig:TemplateColumn Key="Status" HeaderText="Status" IsReadOnly="True" CellStyle="{StaticResource CellControlStatusStyle}"/>
     
       <ig:TemplateColumn   Key="SignerCommand" HeaderText=" " IsReadOnly="True">
                                    <ig:TemplateColumn.ItemTemplate>
                                        <DataTemplate>
                                            <ToggleButton   BorderBrush="white" Background="white"
                                                   IsChecked="{Binding OrdreDeMission.EstSigne,Mode=OneWay}" 
                                                   Style="{StaticResource ToggleButtonSignerStyle}"
                                                   Command="{Binding SignerCommand}"
                                                   Height="20"  Width="20" Margin="0" Padding="0" ToolTip="Ordre de Missison Signé / Non Signé" >
                                                <ContentControl Style="{StaticResource ERP_Signer_ContentControlStyle}" 
                                                                BorderBrush="{StaticResource GridVertFonceColorBrush}"/>
                                            </ToggleButton>
                                        </DataTemplate>
                                    </ig:TemplateColumn.ItemTemplate>
                                </ig:TemplateColumn >
    </ig:Xamgrid>
    Le toggle bouton va donc modifier le statut de mon objet.

    Hors ce tableau est binder sur ListeOrdreDeMissionASigner qui est définit de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
            private ObservableCollection<OrdreDeMissionViewModel> _ListeOrdreDeMissionASigner = null;
            public ObservableCollection<OrdreDeMissionViewModel> ListeOrdreDeMissionASigner
            {
                get
                {
     
                    if (_ListeOrdreDeMissionASigner == null)
                    {
                        ObservableCollection<OrdreDeMissionViewModel> temp = new ObservableCollection<OrdreDeMissionViewModel>();
                        temp.AddRange(
                            from OdM in OrdreDeMissionActif
                            where OdM.Status == OrdreDeMission.OrdreDeMissionStatus.aSigner
                            select new OrdreDeMissionViewModel(OdM, temp)
                            );
     
     
                        _ListeOrdreDeMissionASigner = temp;
     
     
                    }
     
                    return _ListeOrdreDeMissionASigner;
                }
            }

    Mon problème est donc le fait que lorsque je clique sur le bouton SignerCommand celui-ci devrai disparaitre de ce tableau.... Hors ce n'est pas le cas et je ne sais pas trop comment résoudre mon problème...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si j'ai bien compris, tu voudrais faire un filtre avec seulement les éléments à signer.

    Tu ne t'y prends pas de la bonne manière : lorsque tu remplis ton ObservableCollection avec "AddRange", le filtre fait avec la requête LINQ n'est pas ré appliqué à chaque fois, il n'est fait qu'au moment du remplissage c'est à dire en l'occurrence au moment où c'est appelé la première fois. Si tu veux filtrer d'une manière dynamique, tu devrais plutôt t'orienter vers les "ICollectionView" et les filtres.

    Regardes par exemple ces pages :
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    et cherches avec Google des exemples d'utilisation de "CollectionViewSource.GetDefaultView" et de "CollectionView.Filter"...

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    Ok, je vais regarder ce qui existe sur les CollectionView et les filtres.

    De plus pour précisé j'ai les éléments a signer dans le tableau avec un bouton pour les signer, je voudrais que lorsque je clique sur le bouton de signature celui-ci disparaisse car il est signé et n'a plus a être dans ce tableau qui d'élément non signé.

    Pour donner une dernière infos sur mon problème, je dispose de plusieurs tableaux... (un avec les statut en cours, les terminés, en retard etc...).

    Mon filtre est donc toujours appliqués sur chaque tableau.

    Le fait est que si j'utilise le bouton signer sur un ordre de missions à signer celui-ci passe au status en cours et dois donc changer de tableau

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    En essayant d'utiliser les CollectionView je me suis rendu compte que ce type d'objet n'est pas utilisable dans la partie ViewModel...

    Je n'ai donc toujours pas trouvé de réelle solution...

    J'ai fait un exemple de mon petit problème :
    CollectionViewSource.zip

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

Discussions similaires

  1. [JTabbedPane]Refresh spécifique
    Par Piolet dans le forum Composants
    Réponses: 3
    Dernier message: 11/06/2004, 19h11
  2. Refresh
    Par bluevelvet dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/04/2004, 13h20
  3. Probleme de Refresh avec TQuery et DBGrid
    Par insoo dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/11/2003, 17h20
  4. Réponses: 2
    Dernier message: 23/12/2002, 20h34
  5. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38

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