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

VB.NET Discussion :

Tri Datagridview avec propertygrid sur fichier xml


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Tri Datagridview avec propertygrid sur fichier xml
    Bonjour,
    Je voudrais utiliser les fonctionnalités standards de tri d'un DataGridView qui est synchronisé sur un PropertyGrid, les deux étant bindés sur une même source: un fichier XML.
    Le soucis est que soit j'obtiens exactement le comportement souhaité, mais sans le tri, soit j'ai bien le tri et la synchro mais sans les fonctionnalités du PG.

    Voici les codes pour chacun des cas :

    fonctionnalités sans le tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim result As Calendriers = Nothing
    Using sr As StreamReader = New StreamReader(FicCal, Encoding.UTF8)
         result = New Calendriers()
         result.Xml = sr.ReadToEnd()
    End Using
    CForm.CalBS.DataSource = result
    CForm.CalBN.BindingSource = CForm.CalBS
    CForm.CalDGV.DataSource = CForm.CalBS
     
    Puis pour le changement d'enregistrement : 
     Private Sub CalBS_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                    Handles CalBS.CurrentChanged
    CalPG.SelectedObject = CalBS.Current
    Tri sans les fonctionnalités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim MonDS As New DataSet()
    MonDS.ReadXml(FicCal)
    CForm.CalBS.DataSource = MonDS.Tables(0)
    CForm.CalBN.BindingSource = CForm.CalBS
    CForm.CalDGV.DataSource = CForm.CalBS
     
    Puis pour le changement d'enregistrement : 
     Private Sub CalBS_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                    Handles CalBS.CurrentChanged
    CalPG.SelectedObject = CalBS.Current
    J'ai l'impression de passer à coté de quelque chose de simple, mais toutes mes tentatives ont échoué.
    Si quelqu'un pouvait m'apporter la lumière...
    Merci d'avance.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Une solution
    Peut-être déjà connu, mais comme j'ai très longuement cherché pour résoudre le cas de mon précédent post, voici ce que j'ai trouvé.
    Il existe une library .Net nommée Bindinglistview qui permet de réaliser ce que je décrivais, à savoir obtenir le fonctionnement "naturel" d'un datagridview, et notamment la fonction de tri, sur un fichier XML, lié à un propertygrid, sans passer par un dataset.

    Pour le code, et l'utilisation, ça donne :
    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
    Public Class CalForm
        Dim FicCal As String = "monfic.xml"
    
        Private Sub CalForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                     Handles MyBase.Load
    
            Dim result As Calendriers = Nothing
            Using sr As StreamReader = New StreamReader(FicCal, Encoding.UTF8)
                result = New Calendriers()
                result.Xml = sr.ReadToEnd()
            End Using
            CalBS.DataSource = New BindingListView(Of Calendrier)(result)
            CalDGV.DataSource = CalBS
            CalBN.BindingSource = CalBS
        End Sub
    
        Private Sub CalBS_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                    Handles CalBS.CurrentChanged
            CalPG.SelectedObject = CalBS.Current
    
        End Sub
    
        Private Sub EnregistrerToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                    Handles EnregistrerToolStripButton.Click, BindingNavigatorAddNewItem.Click
    
            Using sw = New System.IO.StreamWriter(FicCal, False)
                sw.Write(CType(CType(CalBS.DataSource, BindingListView(Of Calendrier)).DataSource, Calendriers).Xml)
            End Using
        End Sub
    
    End Class
    Dans mon cas ça fonctionne, mais j'utilise des petits fichiers (- de 1 000 entrées).
    Si ça peut aider....

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

Discussions similaires

  1. Requête sur fichier XML avec liaison de données
    Par lpyann dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 14/08/2014, 21h44
  2. Traitement basique sur fichier xml avec python
    Par raphael75015 dans le forum Général Python
    Réponses: 11
    Dernier message: 22/05/2014, 15h44
  3. Réponses: 28
    Dernier message: 08/10/2012, 09h22
  4. [AJAX] requête sur fichier.xml => erreur 405 sous IE !
    Par jeje13009 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/03/2007, 21h42
  5. Problème avec write sur fichier
    Par telescan dans le forum Linux
    Réponses: 8
    Dernier message: 13/12/2005, 16h09

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