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

Windows Forms Discussion :

Datagridview Difficile à créer


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut Datagridview Difficile à créer
    Bonjour à tous

    Sous visual basic express 2010 , j'aimerais créer un tableau comme sur excel,
    avec les colonnes suivantes(ci-joint un exemple fait sur excel) :
    code, designation, quantité, cours, estimation, cours actuel,valorisation, plus value
    dans une ligne tout en haut, et peut-être
    encore 2 lignes où entrer des données et en bas une ligne total qui ferait la somme des éléments "quantité, estimation, valorisation".

    Sur les forums j'ai lu qu'il fallait utiliser une datagridview, et que c'etai redoutablement efficace, je vois effectivement que l'on peut obtenir ce que je cherche avec.

    Cependant, je teste mais ca ne donne rien, et pourtant je suis intelligent
    On parle de dataset, de binding, certains parlent de créer un fichier xml , de datagridview indépendante / non liée, etc etc, les solutions semblent nombreuses et je n'arrive pourtant pas à comprendre et reproduire.

    En Priorité : Je suis bloqué à cette partie dans mon programme, et sans cela impossible d'avancer, donc pourriez vous me donner les astuces et étapes pour créer cette datagridview s'il vous plait?
    Contraintes sur les colonnes :
    "quantité, cours, cours actuel" : uniquement numérique
    "estimation, valorisation, plus value" : obtenus par calcul donc non modificables

    =>
    Comment forcer un format numérique sur une colonne ?
    Comment interdire la saisie sur une colonne ?

    Contraintes sur les lignes :
    Rajout automatique d'une ligne quand il n'en reste plus entre la ligne précédente et la ligne total.

    je dois reproduire ce genre de tableau sur 4 autres fenetres filles, et ce serait sympa si j'avais des propositions de codes et comment faire étape par étape, ainsi j'apprendrais pour prochainement.

    Merci pour tout éclaircissement

    Cordialement mes chèr(e)s
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    bonjour,
    moi je veux bien t'aider mais bon y'en a pour au moins 40min de boulot en travaillant vite donc en t'expliquant...
    Commence plutôt par essayer de faire un datagridview avec les bonnes entêtes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (dgv.Columns.Add("designation_colonne_1,"entête de la colonne");)
    Ensuite tu regarde comment créer une ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (dgv.Rows.Add(a,b,c,d,e,f,g,h);)
    Puis tu regarde comment contraindre l'utilisateur à inscrire uniquement des chiffres (Sur la fonction cellValueChanged tu teste que c'est bien un nombre int.tryParse() ou float;tryParse ou avec Regex)
    Puis sur cette même fonction tu fais ton calcule de somme.

    Essayes de commencer tout seul et quand tu bloques demandes des choses plus précises sinon personne ne t'aidera on à tous du boulot tu sais

    Aller courage !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut Merci
    Merci, ta réponse m'a déjà donné des éléments , mais afficher une ligne total à ma Datagridview, là est la problème, avant même de lui asséner la fonction de faire la somme dans certaines colonnes.
    je poste un extrait du code concerné ainsi qu'une vue de ma Datagridview pour que tu ai une meilleure vue du problème.
    J'aimerais que le total soit là ou je l'ai indiqué dans ma capture d'écran, car quand je rajoute une ligne avec le bouton, la nouvelle ligne se rajoute par dessus cette ligne et donc cette ligne descend(ce qui ne me déplaît pas).
    Thanks for the support!
    Images attachées Images attachées   

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Le plus simple, c'est d'utiliser un DataSet et de lier le DataGridView dessus.

    Ajoute un élément DataSet à ton projet, et dans le designer du DataSet, crée une table avec les colonnes qui vont bien.

    Ensuite, dans le designer de ta Form, crée un DataSet. Dans la liste déroulante de la propriété DataSource, choisis la table que tu veux dans ton DataSet. Ca devrait automatiquement créer les colonnes du DataGridView.

    Ensuite, modifie les colonnes du DataGridView (propriété Columns) pour les personnaliser. Par exemple
    - pour interdire l'édition dans une colonne : ReadOnly = true
    - pour choisir le format : DefaultCellStyle.Format (voir ici pour les formats possible)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par tomlev Voir le message

    Ajoute un élément DataSet à ton projet, et dans le designer du DataSet, crée une table avec les colonnes qui vont bien.

    Ensuite, dans le designer de ta Form, crée un DataSet. Dans la liste déroulante de la propriété DataSource, choisis la table que tu veux dans ton DataSet. Ca devrait automatiquement créer les colonnes du Datagridview.
    Je sens que ça commence à venir !!! J'y suis presque, juste quelques incomprehensions.
    J'ai donc fais "ajouter un dataset" là c'est ok, dans les outils, jai fais glisser une datable, là c'est ok, j'ai fait clik droit, ajouter des colonnes( et j'ai rempli toutes les colonnes qu'il me fallait( PS: dans la datatable les soit disantes colonnes sont affichées comme des lignes, j'espere que c'est ok).
    maintenant quand tu dis
    Dans la liste déroulante de la propriété DataSource, choisis la table que tu veux dans ton DataSet.
    je ne comprend pas c'est lequel le datasource afin qu eje puisse accéder à ses propriétés afin de choisir la datatable que je veux dans mon dataset ; je sens que j'y suis presque...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par josker Voir le message
    PS: dans la datatable les soit disantes colonnes sont affichées comme des lignes, j'espere que c'est ok).
    Oui c'est normal : c'est la liste des colonnes, pas une représentation des données de la table.

    Citation Envoyé par josker Voir le message
    maintenant quand tu dis je ne comprend pas c'est lequel le datasource afin qu eje puisse accéder à ses propriétés afin de choisir la datatable que je veux dans mon dataset ; je sens que j'y suis presque...
    tu sélectionnes le DataGridView dans le designer
    tu affiches la grille des propriétés
    quand tu déroules le combo pour la propriété DataSource, tu dois avoir un truc dans ce style :

    Là dedans tu sélectionnes la table que tu veux

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Monsieur, vous ETES MAGNIFIQUEUUUHHH!!!

    j'ai réussi à créer ma datagrid view avec les titres automatiquement, et comme je suis un emmerdeur de 1ere, je ne vous lacherais plus jusqu'à en finir avec cette histoire de datagridview

    Maintenant :
    1)-
    comment faire en sorte que lors de la création de la datagridview, elle ait déjà 3lignes inscrites dans le tableau par exemple, au lieu de zéro ligne(juste les en-tète et une ligne sur laquelle on ne peut rien écrire avec un symbole étoilé a l’extrême gauche) ?
    Car j'aimerais que l'utilisateur puisse entrer des données dans les cases, je sais comment rajouter une ligne par un bouton, mais je veux un tableau déjà utilisable dès ouverture, et il n'ya que le mode création de colonnes avec le dataset.

    2)-
    Comment afficher le total de certaines colonnes en bas dans une ligne total comme sur excel, avec le calcul qui se fera automatiquement?
    Une fois ces deux choses faites, c'est fini pour la problématique de la datagridview!!! et je pourrais travailler dans la sérénité complète.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    1. Il suffit de rajouter des lignes à la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DataTable table = dataSet1.Tables["NomDeLaTable"];
    for(int i = 0; i < 3; i++)
    {
        // Création d'une ligne
        DataRow row = table.NewRow();
     
        // Ajout de données à la ligne (si besoin) :
        row["Nom"] = "Duschmoll";
        row["Prénom" = "Georges";
     
        // Ajout de la ligne à la table
        table.Rows.Add(row);
    }
    2. Pas vraiment de réponse simple... Je ne pense pas que ce cas soit géré par le DataGridView. Le plus simple serait sans doute de coller des labels sous le DataGridView, en dessous de chaque colonne, et de les remplir manuellement

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    coller des labels sous le DataGridView, en dessous de chaque colonne, et de les remplir manuellement
    Tu veux plutot dire afficher le resultat dans des textbox et non des label no? Et le faire manuellement comme tu le dis, cà n'aurais pas d'intéret.
    J'ai vu un code source ou quelqu'un a affiché le resultat des totaux de colonnes d'une datagridview dans une autre datagridview qu'il a collé en bas et qui fait office de ligne total, mais bon, c'est assez complexe.

    J'ai tenté de mettre le resultat de la somme de toute la colonne "QUANTITE" dans un textbox via ce code : sachant que tqa est "total quantité actions"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim tqa As Integer
            For Each row As DataGridViewRow In DataGridView1.Rows
            tqa = tqa + row.Cells(columnName:="QUANTITE").Value
            Next
            TextBox5.Text = tqa
    Mais cà ne calcule pas

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par josker Voir le message
    Tu veux plutot dire afficher le resultat dans des textbox et non des label no?
    Bah comme tu préfères, les 2 sont possibles...

    Citation Envoyé par josker Voir le message
    J'ai tenté de mettre le resultat de la somme de toute la colonne "QUANTITE" dans un textbox via ce code : sachant que tqa est "total quantité actions"

    Mais cà ne calcule pas
    Fais le calcul sur la DataTable, pas sur le DataGridView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        TextBox5.Text = table.Compute("SUM(UNE_COLONNE)", Nothing)

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Problème solutionné grace à ce code , suite à la suppression des dataset et datatable(vu qu'en réalité elles ne me servent que pour avoir les en-tete) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim total As Integer = 0
     For Each row As DataGridViewRow In datagridview1.Rows
         If Not row.IsNewRow Then
             total += CType(row.Cells("QUANTITE").Value, Integer)
         End If
    Next
    Merci pour ta précieuse aide jusque là !!!

    Maintenant ce serait faire la somme de deux colonnes qui m'intéresserais fortement du genre ( colonne1 * colonne2) à afficher en colonne 3

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par josker Voir le message
    Maintenant ce serait faire la somme de deux colonnes qui m'intéresserais fortement du genre ( colonne1 * colonne2) à afficher en colonne 3
    Encore une fois, ce serait infiniment plus facile avec une DataTable... Il suffirait de créer une colonne calculée avec l'expression "Colonne1 + Colonne2", et la valeur se mettrait automatiquement à jour en fonction de Colonne1 et Colonne2.

    D'une manière générale, quand tu utilises un DataGridView, il vaut toujours mieux utiliser le data binding et manipuler la source de données plutôt que le DataGridView lui-même. Sinon, ton code métier devient fortement dépendant de la couche UI, et donc impossible à réutiliser.

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Okay, faudrait que je réadapte le code à la présence d'une datatable alors, chose que je n'avais pas réussi à faire.
    Mais n'est-il pas possible de juste utiliser une datagridview créee simplement et l'associer plus tard avec une table, dans l'optique de permettre un enregistrement de fichiers par le programme, et réutilisation ultérieure pour réédition ou consultation.

    Sinon question principale : quel méthode proposez vous pour définir cette colonne 3 qui contient l'expression "Colonne1 + Colonne2" ?

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par josker Voir le message
    Mais n'est-il pas possible de juste utiliser une datagridview créee simplement et l'associer plus tard avec une table, dans l'optique de permettre un enregistrement de fichiers par le programme, et réutilisation ultérieure pour réédition ou consultation.
    Si, bien sûr. Tu n'es pas obligé de définir la DataSource dans le designer, tu peux le faire plus tard par le code. Mais dans ce cas il faut que tu crées les colonnes manuellement... Pour indiquer quelle colonne de la table à afficher dans une colonne du DGV, utilise la propriété DataPropertyName de la colonne.

    Ensuite, quand tu as tes données, affecte simplement la DataTable à la DataSource du DGV

    Citation Envoyé par josker Voir le message
    Sinon question principale : quel méthode proposez vous pour définir cette colonne 3 qui contient l'expression "Colonne1 + Colonne2" ?
    Dans le designer de dataset : clic droit sur la table > nouvelle colonne, tu la nommes "colonne3", et dans ses proprietés tu mets Expression = "Colonne1 + Colonne2"...

    Ou alors, en code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    laTable.Columns.Add("colonne3", typeof(int), "colonne1 + colonne2");
    (remplace éventuellement int par le type adéquat...)

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut Programme Terminé
    Grand merci à toi TOMLEV!!!

    J'ai fini le codage et la création de mon application. Elle fonctionne bien, et cà fait plaisir, sache que c'est grace à toi.

    Maintenant je me permet de t'embeter une dernière fois concernant cette application.
    Puisque l'interet comme je te l'avais dit, est de sauvegarder les calculs fais dans un fichier client et de pouvoir le reconsulter ultérieurement pour modification ou simple lecture.

    Cependant, la colle que je te mets est que je veux faire abstraction de la création d'une base de données pour des raisons de difficultés immédiates, mais aussi de gestion par les utilisateurs que je vais bientot quitter.

    Tout au long de l'application, nous avons crée des datagridviews et des textbox qui affichaient les résultats des calculs.

    Que me propose tu comme solution pour sauvegarder les chiffres qui se trouvent dans les datagridviews(5 en tout) et dans les textbox(35 en tout) dans un fichier, et lorsque j'ouvrirais ce fichier également que toutes les infos reprennent leur places.

    Pour te rassurer, j'ai fait quelques recherches , mais certaines solutions comme la sérialisation sont trop compliquées.

    J'ai vu qu'il est peut etre possible de faire l'enregistrement dans un fichier .text, et de le charger après à l'ouverture.

    J'ai déja configuré mes bouton ouvrir et enregistrer via openfiledialog et savefiledialog.

    As tu des idées pour m'aider?

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par josker Voir le message
    Cependant, la colle que je te mets est que je veux faire abstraction de la création d'une base de données pour des raisons de difficultés immédiates, mais aussi de gestion par les utilisateurs que je vais bientot quitter.
    Une BDD est pourtant la solution la plus adaptée...

    Après, tu peux toujours enregistrer les DataTable (ou le DataSet complet) directement en XML, avec la méthode WriteXml.

    Citation Envoyé par josker Voir le message
    Que me propose tu comme solution pour sauvegarder les chiffres qui se trouvent dans les datagridviews(5 en tout) et dans les textbox(35 en tout) dans un fichier, et lorsque j'ouvrirais ce fichier également que toutes les infos reprennent leur places.

    Pour te rassurer, j'ai fait quelques recherches , mais certaines solutions comme la sérialisation sont trop compliquées.
    Pour les DataGridView, si tu utilises le data binding, le plus simple est d'enregistrer les tables en XML comme indiqué plus haut.

    Pour les autres infos, crée une classe avec des propriétés pour chaque truc que tu veux enregistrer, et sérialise la en XML. C'est très simple, regarde ce tuto pour plus d'infos (c'est en C#, mais tu peux convertir en VB avec ce convertisseur)

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    J'ai un léger soucis pour l'appliquer à mon exemple précisement, à savoir
    sérialiser et déserialiser une datagridview nommée "datagridview1" qui est non liée à une base de données, ou l'utilisateur tape simplement les données qu'il veut, et moi je souhaite conserver ses données dans un fichier .txt ou xml afin de les ouvrir plus tard et pouvoir les modifier au besoin.

    Avez-vous un exemple de code qui s'applique à ce cas, tous les exemples que j'ai trouvé montrent la procédure avec une datagridview liée à un dataset, ce n'est pourtant pas mon cas.

    Je prévois d'enregistrer plusieurs datagridviews dans le meme fichier xml donc si quelques modifications sont nécessairement compliquées, merci de me le faire savoir.

    Cordialement

    PS: c'est mon dernier blocus pour clore l'application.

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par josker Voir le message
    sérialiser et déserialiser une datagridview nommée "datagridview1" qui est non liée à une base de données, ou l'utilisateur tape simplement les données qu'il veut, et moi je souhaite conserver ses données dans un fichier .txt ou xml afin de les ouvrir plus tard et pouvoir les modifier au besoin.
    Tu abordes le problème de travers... un DataGridView est un contrôle graphique, ça n'a pas de sens de vouloir le sérialiser. Ce qu'il faut sérialiser, c'est les données, pas le contrôle.

    Si tes données se trouvent uniquement dans le DataGridView, tu as un gros problème de conception, parce que ça implique que ton code métier est complètement dépendant de l'interface graphique. Tu devrais avoir une structure de données dédiée (DataSet, classes spécifiques...) pour représenter tes données en mémoire, et lier le DataGridView à cette structure de données.

    Le plus simple est de modifier ton code pour que les données de ce DataGridView soient dans une DataTable (ce qui n'implique pas forcément d'utiliser une base de données), et lier le DGV à la table. Quand l'utilisateur modifie les données affichées dans le DGV, ça modifier automatiquement les données dans la table, et inversement. Ensuite, dans ton code, tu n'as plus qu'à manipuler la DataTable sans te préoccuper du DataGridView

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Voilà, j'ai fais ceci :

    1- Ajouter un dataset au projet.

    2-Créer une datatable à l'interieur de ce dataset via le concepteur, en rajoutant mes colonnes "code", "designation", "quantite", "prix", "estimation", "cours boursier", " valorisation" "plus value", qui sont don les colonnes de ma dtgview.

    3- Aller dans les taches du dtgview et choisir comme source de données(autres sources de données) dataset==>datatable. Il m'a automatiquement créé la connection dataset2bindingsource.

    A ce stade comment serialiser les données que je vais taper dans la datagrigdview en xml et enregistrer ce fichier via un boutton afin de pouvoir le rechercher plus tard et l'ouvrir pour consultation ou modification-réenregistrement ?

    Un exemple de code serait le bienvenu

  20. #20
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Au démarrage de l'application, tu charges la DataTable :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim table As New LeTypeDeLaTable()
    If File.Exists(chemin) Then
        table.ReadXml(chemin)
    End If
    DataGridView1.DataSource = table

    Et pour enregistrer :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim table As DataTable = CType(DataGridView1.DataSource, DataTable)
    table.WriteXml(chemin)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] créer un report Viewer à partir d'une DataGridView
    Par anasschiguer dans le forum Visual Studio
    Réponses: 3
    Dernier message: 13/06/2017, 12h14
  2. Créer une DataGridView avec des lignes instructions
    Par dragondumond dans le forum VB.NET
    Réponses: 20
    Dernier message: 28/03/2013, 09h47
  3. Créer DataGridView Custom avec header fusionné
    Par touftouf57 dans le forum C#
    Réponses: 1
    Dernier message: 26/10/2012, 01h24
  4. Créer des filtres dans un DataGridView
    Par Nijin dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/09/2010, 14h12
  5. Créer un composant identique à DataGridView WinForms
    Par chti_juanito dans le forum ASP.NET
    Réponses: 8
    Dernier message: 08/03/2010, 09h09

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