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

Accès aux données Discussion :

[VB.NET] Comment rafraichir un DataGrid ?


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 19
    Points
    19
    Par défaut [VB.NET] Comment rafraichir un DataGrid ?
    Bonjour j'ai une application qui affiche par l'intermediare d'un datagrid les infos d'une base de données.

    Dès le demarrage elle charge le contenu de la table et affiche les enregistrement.

    Afin de faire ca proprement, j'ai créé un form qui permet d'ajouter des enregistrement à cette table.

    Mon problème est comment faire en sorte que mon nouvel enregistrement s'affiche dans mon datagrid sans avoir a refermer et réouvrir l'appli.

    en gros le cheminement devrait etre

    Lancement de l'appli -> Chargement du Datagrid -> Formulaire d'ajout d'enregistrement -> Ajout de l'enregistrement dans la base -> Rafraichissement du Datagrid -> Fermeture du formulaire d'ajout.

    Tout marche sauf le rafraichissement du Datagrid

    Si quelqu'un à une idée, merci d'avance

    Bonne journée

  2. #2
    Membre habitué Avatar de joefou
    Profil pro
    Inscrit en
    Février 2005
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 248
    Points : 177
    Points
    177
    Par défaut
    Salut Hakki !

    J'ai une méthode un peu barbare, mais ça fonctionne: je recharge le dataset ou datatable (en utilisant la même requête) affecté au datasource du datagrid après une modification.
    "On peut dire qu’il est possible de savoir comment vaincre sans être capable de le faire" - Sun Tze, in L'art de la guerre

    "Mais t'es complètement naze ou quoi ?! UNE pomme ! ça fait DEUX moitiés de pomme !! mais quand vas-tu le comprendre ?! J'en ai ma claque, j'me tire !" - Bouddha et un disciple, dans un moment de faiblesse

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    je sais pas si c barbare mais ca marche il fallait juste recharger le dataset, rien a voir avec le datagrid, c'est pour ca que je trouvais pas!!!!

    si ca interesse des personnes il faut ecrire cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.TableAdapter.Fill(Form1.BdDataSet1.Table)
    En plus je suis bete c'est la ligne qui se met automatiquement dans le load du premier formulaire.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Salut les gars,

    Juste une confirmation car il me semble que ton pb Hakki est le meme ou voisin du mien : j'ai deux tables dans ma base qui sont reliées par une relation "un à plusieurs".
    Les enfants sont listés dans un datagried.
    Les ajouts d'enregistrements sont ok mais ils se listent sur le dernier enregistrement de la table maitre et non pas à leur place dans la liste des enregistrement de ma clef :

    ex:
    N° Auteur = 123
    ajout enregistrement avec ce numéro auteur
    losque j'affiche sa liste j'ai tous les enregistrements initiaux mais pas l'enregistrement ajouté ; il se trouve en fin de liste soit sur la liste du dernier Auteur de ma base maitre.



    La seule solution est elle de faire un "FILL" ?
    N'y a t il pas une manière de "REINDEX" comme en visual dbase ?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Hakki

    Lancement de l'appli -> Chargement du Datagrid -> Formulaire d'ajout d'enregistrement -> Ajout de l'enregistrement dans la base -> Rafraichissement du Datagrid -> Fermeture du formulaire d'ajout.

    Tout marche sauf le rafraichissement du Datagrid

    Si quelqu'un à une idée, merci d'avance

    Bonne journée
    dans la phase 'ajout de l'enregistrement dans la base' tu mets à jour ta datatable ? ou tu le fais directement dans la bdd ?
    Je pense que si tu ajoute ton enregistrement d'abord dans la datatable, tu n'as pas besoin de faire le fill.
    Pour ajouter une ligne dans la datatable, je crois que c'est un truc du genre
    maDataTable.Rows.add(maDataRow)

  6. #6
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Hakki dit:
    je sais pas si c barbare
    Imaginons avoir dans la table(base) 9999 ligne, en ajountant une ligne 9999+1,ça fait 10000 , recharger 10000 ligne parce que on a ajouté une, recharger encore 10001 parce que...et encore 10002 parce que...Si ça c'est pas barbare .

    Plutôt tu devrais faire comme te la conseiller geantvert:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DataRow dr=MadDataTable.NewRow();
    dr("Champ1")=Mavaleur1;
    dr("Champ2")=MaValeur2;
    //ainsi de suite...puis pour que la ligne s'ajoute effectivement à ta DataTable 
    //et s'affiche dans la DataGrid associé tu fais
    MaDataTable.Rows.Add(dr);
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Effectivement la méthode "add" permet d'inscrir la nouvelle ligne dans la table mais si tu as des tables liées elle ne met pas à jour la liaison et donc la relation un à plusieurs ....

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Oups ...
    Je suis à battre ; après recherche, je me suis aperçue que je ne renseignais pas par le bon textbox, ce qui expliquait cette erreur.
    J'ai modifié mon programme ... et ça marche, le titre se retrouve bien à sa place dans la liste.
    Donc effectivement Hakki tu devrais t'en sortit avec la méthode "add".

Discussions similaires

  1. [VB.NET]Comment remplir un DataGrid ?
    Par malhivertman1 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/08/2006, 16h10
  2. [VB.Net] Comment imprimer un DataGrid ?
    Par JauB dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/05/2006, 14h48
  3. Réponses: 5
    Dernier message: 28/04/2006, 14h34
  4. [VB.Net] Comment rafraichir une page aspx ?
    Par bisounux dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/02/2006, 11h25

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