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