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 :

[C#]Sauvegarde et accès à plusieurs DataTable


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut [C#]Sauvegarde et accès à plusieurs DataTable
    Bonjour,
    Dans le cadre d'un projet, je travaille avec des barèmes.
    En fonction d'un choix dans un comboxBox je vais avoir un DataGridView qui va afficher plusieurs ligne que j'aurais rempli grâce à un dataTable.
    J'ai donc mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView.datasource = monDataTable
    A partir de là j'aurais besoin de :
    Lorsque je selectionne une autre valeur de mon ComboxBox, il sauvegarde la DataSource de mon DataGridView et m'affiche celle correspondant à la nouvelle valeur du ComboBox selectionnée.

    Pour le moment j'ai fait cela avec seulement 2 valeurs dans mon ComboBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void cbTypeCalcul_CGF_SelectionChangeCommitted(object sender, EventArgs e)
    {
    DataTable dtTableTemp = (DataTable)dgTranche_CGF.DataSource;
     
    //aTrancheCgfBackup déclaré en globale dans mon form
    if (aTrancheCgfBackup.IsInitialized)
        dgTranche_CGF.DataSource = aTrancheCgfBackup;
    else dgTranche_CGF.DataSource = null;
     
    aTrancheCgfBackup = dtTableTemp;
    }

    Mais j'aurais besoin de généraliser cela.

    Sachant que j'ai plusieurs Combobox avec chacun leur DataGridView associé.
    J'avais pensé à utiliser un Array en global sur mon form mais je ne peux ajouter ma Datasource ou je veux dans mon Array, par exemple je ne peux ajouter un Datasource à l'index 2 si je n'ai rien mis à l'index 0...

    Merci pour votre aide.

  2. #2
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    Salut,
    Je comprends pas tres bien l'histoire de la sauvegarde. La combo est là pour filtrer ton GridView, c'est ca ? Donc ton datasource reste le meme. Tu bind simplement la propriété datasource de ton Gridview a un dataview, puis tu changes la propriété RowFilter du dataview en fonction de la selection de ta combo.
    Ca t'aide ?

  3. #3
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Nop pas exactement.
    En fait en fonction du combo, le datasource va être complétement différent.
    Il n'y aura pas les même colonnes, pas le même nombre de colonnes, les lignes à l'intérieur seront complétement différentes etc....

    J'ai essayé d'utiliser un Tableau de DataTable en globale et de le remplir avec la source mais ça ne fonctionne pas complétement.

    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
     
    DataTable[] listeTable = new DataTable[6];
     
     
    private void cbTypeCalcul_CGF_SelectionChangeCommitted(object sender, EventArgs e)
            {
                int iNewTCal = Convert.ToInt32(cbTypeCalcul_CGF.SelectedValue);
                int iOldTCal;
                if (iNewTCal == 2)
                    iOldTCal = 1;
                else iOldTCal = 2;
     
                if (iOldTCal == 1)
                {
                    listeTable[iOldTCal] = (DataTable)dgTranche_CGF.DataSource;
                    dgTranche_CGF.DataSource = listeTable[iNewTCal];
                }
                if (iOldTCal == 2)
                {
                    listeTable[iOldTCal] = (DataTable)dgTranche_CGF.DataSource;
                    dgTranche_CGF.DataSource = listeTable[iNewTCal];
                }
            }
    Si je clic sur mon Combobox et que je selectionne, il va utiliser l'autre DataTable de mon tableaux.
    Mais si je clic et que je reselectionne la même valeur de mon Combox il va écraser mes tables

    Je voulais alors passer par l'évenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void cbTypeCalcul_CGF_SelectedValueChanged(object sender, EventArgs e)
    Mais le problème cette fois est que cet évenement est appelé dès la génération de mon form lorsque je remplit mes ComboBox.....

    Merci pour votre aide.

Discussions similaires

  1. [c#] Remplir un DataGridView avec plusieurs DataTable
    Par macfred dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/02/2010, 11h02
  2. Accès à plusieurs registres via RMI
    Par DiJiCode dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 07/11/2008, 02h59
  3. Sauvegarde et accès données de connexion
    Par hexoseth dans le forum Langage
    Réponses: 5
    Dernier message: 12/03/2008, 15h01
  4. Réponses: 2
    Dernier message: 18/07/2007, 08h38
  5. Réponses: 2
    Dernier message: 09/08/2006, 03h13

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