Modifier des données dans une ligne datagridview

Valerigolade Messages postés 5 Date d'inscription dimanche 28 décembre 2014 Statut Membre Dernière intervention 18 janvier 2015 - 28 déc. 2014 à 16:06
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.

6 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
28 déc. 2014 à 16:36
Bonjour c'est les données du dataset que tu dois modifier
0
Valerigolade Messages postés 5 Date d'inscription dimanche 28 décembre 2014 Statut Membre Dernière intervention 18 janvier 2015
28 déc. 2014 à 16:41
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
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
28 déc. 2014 à 17:49
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.
0
Valerigolade Messages postés 5 Date d'inscription dimanche 28 décembre 2014 Statut Membre Dernière intervention 18 janvier 2015
11 janv. 2015 à 11:42
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 ?
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
12 janv. 2015 à 09:53
Bonjour, je n'ai pas VB au boulot, si j'ai le temps ce soir à la maison.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
13 janv. 2015 à 07:53
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)
0
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
Merci beaucoup, j'étudie l'utilisation des listes fortement typé maintenant.
Désolé pour ma réponse tardive.
Merci encore
Cordialement
0
Rejoignez-nous