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 :

XML et DATASET


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 29
    Par défaut XML et DATASET
    Bonjour,

    Voila je viens pour vous expliquer un problème que j`ai avec un dataset et un fichier XML.

    Je charge ds un dataset un fichier XML,je fais quelques traitements dessus. Jusqu`a là pas de problemes.
    Jai crée une fonction qui permet de supprimer un noeud dans le fichier, cette fonction fonctionne parfaitement. elle supprime bien le noeud pere et ses fils ds le fichier, le truc c´est que dans mon dataset si je supprime le noeud 1,le dataset se remet a jour aussi vite et les donnees disparraissent.
    Maintenant si je navigue dans le dataset ( grace a un bouton suivant et precedent) et que je supprime un autre noeud , alors le noeud est bien supprime du fichier egalement , mais le dataset ne se remet pas a jour, evidemment si je reclique sur supprimer ,vient l´erreur qui me dit evidemment que le noeud nexiste pas ...

    Je vous poste mon petite code :
    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
     
      Private Sub deleteXMLnode(ByRef id As Object)
     
            Dim d As New XmlDocument()
            d.Load(OpenFileDialog.FileName)
     
            Dim root As XmlNode = d.DocumentElement
     
            ' select the node with the corresponding company`s id to delete
            Dim node As XmlNode = root.SelectSingleNode("//Company[ID=" & "'" & CStr(id) & "'" & "]")
            ' Select the father
            Dim father As XmlNode = node.ParentNode
            ' Father delete his child
            father.RemoveChild(node)
            ' Save the new document
            d.Save(OpenFileDialog.FileName)
     
        End Sub
    puis la fonction qui appelle la suppression du noeud ( evenement du click sur un bouton )

    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
     
    Private Sub SaveBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveBtn.Click
            Dim answer As DialogResult = MessageBox.Show("Save now ?", "Save changes in Telis", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            Dim operationSucess As Boolean
            Dim id As String
     
            If (answer = Windows.Forms.DialogResult.Yes) Then
                'Update the row in Telis database
                Dim currentline As Integer = Grid_client.CurrentRowIndex
                Dim _id As Object = ds.Tables(1).Rows(currentline).Item("ID_Adresse")
                Dim _idFirma As Object = ds.Tables(0).Rows(currentline).Item("ID")
     
                'update the database with the new field values, and return a boolean
                operationSucess = sa.UpdateTelis(_id)
     
                If operationSucess Then
                    MessageBox.Show("Save OK", "Telis", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    deleteXMLnode(_idFirma)
     
                    'because i delete the currently node in the XML file and not in the dataset
                    'the refresh of the datagrid function don't work here
     
                    'i have to delete the data in the dataset
                    ds.Tables(0).Rows(currentline).Delete()
     
                    Grid_client.Refresh()
     
                    'selection of the first line
                    Grid_client.Select(0)
                    Grid_client.CurrentRowIndex = 0
     
                    'and work
                    resetFields()
                    detectProblems()
                    addCorrection()
                    id = ShowContactFields()
                    ShowCompanyFields(id)
     
                Else
                    MessageBox.Show("Problems appear", "Telis", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
            End If
     
        End Sub

    Si vous sauriez me conseiller ,je vous en remercierais d´avance.
    Brice

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Par défaut
    Juste une suggestion (je ne sais pas ce que ca vaut) :

    Tu pourrais peut-etre sauvegarder ton noeud courant, recharger ton fichier Xml dans ton dataset apres la modif et te replacer sur le noeud courant.

    Bon courage

    Guillaume

Discussions similaires

  1. XML vers DataSet : Problème de caractère spéciaux
    Par verbal34 dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 31/12/2008, 12h31
  2. du dataset vers xml et du xml vers dataset
    Par tarikmahf dans le forum C#
    Réponses: 1
    Dernier message: 26/01/2008, 19h25
  3. [VB.net]Lecture xml vers dataset : prob avec sous noeuds
    Par Garrett dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2007, 20h28
  4. [C#] Rattacher un treeview à un fichier Xml ou DataSet
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 7
    Dernier message: 15/06/2006, 18h22
  5. Réponses: 4
    Dernier message: 22/12/2005, 15h30

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