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 :
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 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
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
Partager