Modifier des données dans une ligne datagridview

Messages postés
5
Date d'inscription
dimanche 28 décembre 2014
Statut
Membre
Dernière intervention
18 janvier 2015
- - Dernière réponse : Valerigolade
Messages postés
5
Date d'inscription
dimanche 28 décembre 2014
Statut
Membre
Dernière intervention
18 janvier 2015
- 18 janv. 2015 à 21:45
Bonjour,
je souhaite modifier une ligne de donnée dans un datagridview.
- Ce datagridview est rempli à partir d'un fichier xml en passant par un dataset et un datatable.
- La 1ere colonne est une colonne date.
- Pour modifier les valeurs de la ligne, j'utilise l'événement doubleclik de la ligne, pour ouvrir une form de saisie des nouvelles valeurs.
- Je clique sur un bouton "Valider" pour mettre à jour les nouvelles valeurs

Jusque là, ça fonctionne

Mais si j'active le tri par date de la 1ere colonne (Date) du datagridview, et que je modifie la date de la ligne à modifier, ça ne fonctionne pas.

Je suis perdu.
J'ai besoin du tri par date automatique, même si je modifie la date d'une ligne, j'aimerai que cela soit pris en compte sans que ça écrase les données d'une autre ligne.

Merci pour votre aide.
Afficher la suite 

6 réponses

Messages postés
13838
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 octobre 2019
311
0
Merci
Bonjour c'est les données du dataset que tu dois modifier
Commenter la réponse de Whismeril
Messages postés
5
Date d'inscription
dimanche 28 décembre 2014
Statut
Membre
Dernière intervention
18 janvier 2015
0
Merci
Merci pour la réponse, mais c'est bien ce que je fais avec cette ligne:

DS_Compte.Tables("Compte").Rows(VarNumLigne).Item("Date") = VarDateEnr

VarDateEnr étant la valeur de la nouvelle date.
Mais lorsque que j'ai activé le tri par date avant de modifier une ligne, la modification m'écrase une autre ligne
Commenter la réponse de Valerigolade
Messages postés
13838
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 octobre 2019
311
0
Merci
Alors tu peux tenter un autre concept.
Tu écris une classe qui correspond à tes enregistrements.
Tu charges ton xml dans une List<T> de cette classe par LinqToXml par exemple (ici un exemple en C# que tu pourras passer dans un traducteur en ligne).
Ensuite tu affiches et modifies tes données grâce au binding.
Commenter la réponse de Whismeril
Messages postés
5
Date d'inscription
dimanche 28 décembre 2014
Statut
Membre
Dernière intervention
18 janvier 2015
0
Merci
Bonjour,
J'ai bien compris le concept que tu me décris, mais je nage un peu pour l'écrire en VB.NET 2010.
Peux tu me donner un exemple, stp ?
Whismeril
Messages postés
13838
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 octobre 2019
311 -
Bonjour, je n'ai pas VB au boulot, si j'ai le temps ce soir à la maison.
Commenter la réponse de Valerigolade
Messages postés
13838
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 octobre 2019
311
0
Merci
Bonjour vite fait la traduction du post C#
<?xml version="1.0" encoding="utf-8"?>
<!--Un petit commentaire tout au début pour la forme ;-)-->
<Racine>
  <Balise1>
    <Balise2>
      <ListePersonnes>
        <Personne>
          <Nom Prenom="Alain">Dit</Nom>
          <DateNaisance>1990-06-06T00:00:00</DateNaisance>
        </Personne>
        <Personne>
          <Nom Prenom="Jean">Sort</Nom>
          <DateNaisance>2000-01-01T00:00:00</DateNaisance>
        </Personne>
      </ListePersonnes>
    </Balise2>
  </Balise1>
</Racine>



la classe personne avec les méthode d'import
Public Class Personne
    Public Sub New()
        Enfants = New List(Of Personne)()
    End Sub

    Public Property Nom() As String

    Public Property Prenom() As String

    Public Property Naissance() As DateTime

    Public Property Enfants() As List(Of Personne)

    Public Shared Function ImportXml() As List(Of Personne)

        Dim xDoc As XDocument = XDocument.Load(String.Format("{0}\test.xml", Application.StartupPath))
        Dim mesPersonnes As List(Of Personne)
        mesPersonnes = (
            From personne In xDoc.Descendants("Personne")
            Select New Personne With {.Nom = personne.Element("Nom").Value, .Prenom = personne.Element("Nom").Attribute("Prenom").Value, .Naissance = Date.Parse(personne.Element("DateNaisance").Value)}).ToList() 'on en fait une liste - on convertit en datetime - on va chercher l'attribut -  c'est un string donc pas de conversion - directement la balise qui contient les données d'une seule instance de personne

        Return mesPersonnes

    End Function

    Public Shared Sub ExportXml(MesPersonnes As List(Of Personne))
        Dim xDoc As New XDocument(New XElement("Racine", New XElement("Balise1", New XElement("Balise2", New XElement("ListePersonnes",
            From personne In MesPersonnes
            Order By personne.Prenom Ascending
            Select New XElement("Personne", New XElement("Nom", New XAttribute("Prenom", personne.Prenom), personne.Nom), New XElement("DateNaisance", personne.Naissance))))))) ' on écrit l'élément date de naissance - on écrit l'élement Nom avec Prenom en attribut - triées par prénom pour le principe - on attaque la liste de personnes - et encore une - une balise

        xDoc.AddFirst(New XComment("Un petit commentaire tout au début pour la forme ;-)"))

        'on sauve
        xDoc.Save(String.Format("{0}\test.xml", Application.StartupPath))
    End Sub
End Class


L'import, le tri et l'export
        Dim mesPersonnes As List(Of Personne)
        mesPersonnes = Personne.ImportXml() 'import xml
        mesPersonnes = mesPersonnes.OrderBy(Function(p) p.Naissance).ToList() 'tri par date de naissance
        Personne.ExportXml(mesPersonnes)
Commenter la réponse de Whismeril
Messages postés
5
Date d'inscription
dimanche 28 décembre 2014
Statut
Membre
Dernière intervention
18 janvier 2015
0
Merci
Merci beaucoup, j'étudie l'utilisation des listes fortement typé maintenant.
Désolé pour ma réponse tardive.
Merci encore
Cordialement
Commenter la réponse de Valerigolade