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 :

Rafraichir un Datagrid (WPFToolkit)


Sujet :

Windows Presentation Foundation

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Points : 210
    Points
    210
    Par défaut Rafraichir un Datagrid (WPFToolkit)
    Bonjour,

    Avant tout, ne criez pas. Lisez jusqu'au bout.

    J'ai un datagrid qui a pour ItemSource un List<MonTypeAMoi>
    (pas de ObservableCollection parce que je n'ai pas besoin d'ajouter / supprimer des éléments, et c'est juste pour visualiser)
    Les données s'affichent bien à l'initialisation mais après, si l'objet source est modifié, je n'arrive pas à le rafraîchir sauf en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    datagrid1.itemsource = null;
    datagrid1.itemsource= MaListe;
    Ce qui fout en l'air le tri, l'ordre des colonnes si l'utilisateur l'a changé et quelques améliorations spécifiques.


    c'est effectivement un sujet qui a déjà été abordé ici : mais si j'adopte la solution donnée, GetBindingExpression renvoie null parce que _txtInfo1 n'a pas de liaison active.
    J'ai ajouté un binding (voir projet exemple ci-joint) mais le updateTarget ne fait rien.

    Je suis tombé sur ce lien qui dit que c'est une régression connue (mais ça vient d'un forum, la fiabilité de la source n'est pas forcée). Est-ce que l'un de vous aurait eu cet écho ?

    J'ai tenté d'implémenter le INotifyPropertyChanged mais toujours sans résultat (le binding fait bien afficher la collection dans la grille s'il n'y a rien mais ne rafraîchit pas s'il y a déjà quelque chose). Cependant, ça peut venir de moi.

    Est-ce que quelqu'un a déjà réussi à rafraîchir la datagrid du WPFToolkit ?


    Côté code, voilà la datagrid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <my:DataGrid AutoGenerateColumns="True" Name="dataGrid1" />
    J'ai mis AutoGenerateColumn à true parce qu'il ne connaît pas la propriété DataFieldBinding (et puis ça suffit pour l'exemple).

    Le code-Behind :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
      public partial class Window1 : Window
      {
        List<Book> LsBooks;
     
        public Window1()
        {
          InitializeComponent();
        }
     
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
          // initialisation collection qui sert de source au datagrid
          LsBooks = new List<Book>();
          LsBooks.Add(new Book(30, "j'ai les cheveux longs", "napoleon"));
          LsBooks.Add(new Book(30, "le bon gigot d'antan", "maite"));
          LsBooks.Add(new Book(30, "oui oui et sa voiture jaune", "non non"));
     
          dataGrid1.ItemsSource = LsBooks;
        }
     
        /* note sur le refraichissement par binding, si on enlève le "dataGrid1.ItemsSource = LsBooks;" de l'evenement loaded et que l'on execute le projet, puis clique sur le bouton "refresh normal", on voit bien que le binding se fait puisque la datagrid se remplit. 
         * mais s'il y a déjà quelquechose dans la grille, rien ne se passe
         */
        private void button2_Click(object sender, RoutedEventArgs e)
        {
     
          // modification de la source
          LsBooks[1].price += 1;
          LsBooks.Add(new Book(20, "Comment rater un tour hihihi", "Garcimore"));
     
          // mise en place du binding (serait mieux dans l'evenement loaded mais histoire de tout séparer, je le mets ici)
          Binding b = new Binding("");
          b.Mode = BindingMode.OneWay;
          b.Source = LsBooks;
          dataGrid1.SetBinding(ItemsControl.ItemsSourceProperty, b);
     
     
          // création d'un bindingexpression pour lancer le binding quand on veut 
          BindingExpression bindExpression = dataGrid1.GetBindingExpression(ItemsControl.ItemsSourceProperty);
     
          // on mets à jour
          bindExpression.UpdateTarget();
     
          // perdu , ça ne fait rien ... pourquoi ? 
        }
      }
     
     
      public class Book
      {
        public int price { get;  set; }
        public string title { get;  set; }
        public string author { get;  set; }
     
        public Book(int p, string t, string a)
        {
          price = p;
          title = t;
          author = a;
        }
      }
    Le code complet dans un mini-projet en pièce jointe.
    Fichiers attachés Fichiers attachés
    --
    Arnaud DANEELS

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

Discussions similaires

  1. datagrid WPFToolkit - Perte de focus
    Par Aurélien19 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 18/10/2010, 12h17
  2. Rafraichir un Datagrid après MAJ de la BD
    Par b_zakaria dans le forum Flex
    Réponses: 9
    Dernier message: 25/03/2009, 15h44
  3. rafraichir des datagrids
    Par boubounne dans le forum VB.NET
    Réponses: 9
    Dernier message: 06/03/2007, 17h56
  4. [VB.NET] Comment rafraichir un DataGrid ?
    Par Hakki dans le forum Accès aux données
    Réponses: 7
    Dernier message: 11/11/2006, 17h38
  5. [C#] Rafraichir un datagrid.
    Par msalque dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/08/2005, 07h54

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