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 :

DataGrid - Add Rows


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Par défaut DataGrid - Add Rows
    Hello,

    Je me mets doucement mais sûrement au WPF.
    Alors mon problème concerne le control DataGrid offert par le WPFToolkit.

    J'arrive bien a ajouter un nouvel objet au context de mon user control.
    Je force la sélection de cet objet depuis le datagrid : _myDG.SelectedItem = monNouvelObjet

    Seulement je ne vois jamais ma nouvelle ligne dans mon datagrid

    Ci-joint un concentré de mon XAML associé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <wpfToolkit:DataGrid IsSynchronizedWithCurrentItem="True"  Name="_myDG" ItemsSource="{Binding}" AutoGenerateColumns="False">
         <wpfToolkit:DataGrid.Columns>
             <wpfToolkit:DataGridTextColumn Binding="{Binding Path=Info1}" Header="Info 1"/>
              <wpfToolkit:DataGridTextColumn Binding="{Binding Path=Info2}" Header="Info 2" />
         </wpfToolkit:DataGrid.Columns>
    </wpfToolkit:DataGrid>
    Le code behind pour ajouter une nouvelle ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
          var lstMyObjectClass = this.DataContext as List<MyObjectClass>;
          lstMyObjectClass.Add(new MyObjectClass { Info1="Info par défaut", Info2="Info par défaut" });
          this._myDG.SelectedItem = lstMyObjectClass[lstMyObjectClass.Count - 1];
    }

  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
    Par défaut
    Salut,

    Il vaut mieux travailler avec une ObservableCollection<MyObjectClass> qu'avec une List<MyObjectClass>, car l'ObservableCollection fournit des notifications lorsque un élément est ajouté

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Par défaut
    Impeccable, ça fonctionne très bien
    L'opération "add" ajoute bien une nouvelle ligne tout comme l'opération "delete".
    Simplement en remplaçant le type List<T> par ObservableCollection<T>

    Sinon j'ai un autre soucis.
    Lorsque je modifie mes différentes informations elle sont automatiquement sauvées dans le datacontext.

    Comment puis-je gérer les undo si l'utilisateur clique sur "cancel" ?

  4. #4
    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
    Par défaut
    Le undo... Peut-être que ce lien va t'aider (si j'ai bien compris) :
    http://mikestedman.blogspot.com/2008...ollection.html

    L'ObservableCollection ne permet pas de dire si une propriété de l'objet d'un des item de la collection a été modifié. Comme dis dans le lien (si j'ai bien compris, encore une fois ), tu dois pouvoir créer ta propre collection héritant de ObservableCollection pour obtenir une information HasChanges mise à True lorsqu'une propriété de l'item a changé.


    [Edit] Après avoir lu plus en détail je ne suis pas convaincu du tout que ça réponde à la problématique en fait

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Regarde du coté de la propriété UpdateSourceTrigger qui permet de définir quand se met à jour la source de donnée. La valeur Explicit pourrait t'intéresser.

    http://msdn.microsoft.com/fr-fr/libr...cetrigger.aspx
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Par défaut
    Impeccable c'est exactement ce que je voulais

    Pour ceux que ça interesse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void btnSave_Click(object sender, RoutedEventArgs e)
    {
        // mise à jour de la source
        BindingExpression bindExpression = _txtInfo1.GetBindingExpression(TextBox.TextProperty);
        bindExpression.UpdateSource();
    }
     
    private void btnCancel_Click(object sender, RoutedEventArgs e)
    {
        // annule les modifications
        BindingExpression bindExpression = _txtInfo1.GetBindingExpression(TextBox.TextProperty);
        bindExpression.UpdateTarget();
    }

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

Discussions similaires

  1. DataGridRow Template Add row Slower
    Par draco951 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 03/06/2013, 00h41
  2. [SSIS] [2K8] Failed to add row to output buffer.
    Par clementratel dans le forum SSIS
    Réponses: 1
    Dernier message: 11/02/2011, 12h02
  3. Ajouter un bouton "add row" dans une datagrid
    Par mikees dans le forum Flex
    Réponses: 6
    Dernier message: 03/05/2010, 16h11
  4. dataset add row ne pas ajouter de clé double?
    Par gregcat dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/01/2008, 11h25
  5. Réponses: 3
    Dernier message: 21/11/2005, 15h05

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