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

C# Discussion :

Probleme CheckBoxColumn dans une DataGridView


Sujet :

C#

  1. #1
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut Probleme CheckBoxColumn dans une DataGridView
    Bonjour,

    J'ai un probleme que je trouve bizarre... C'est peut etre moi qui deraille (le c# a eu ma peau) mais je n'arrive pas a faire quelque chose de tres simple :

    Dans mon appli, je charge un User Control dans lequel existe une DataGridView. Cette DataGridView possede 2 colonnes bindee avec des donnees d'une BDD et j'ai rajoute une CheckBox colonne non bindee.
    Lorsque le User Control se charge, je recupere les donnees dans ma DataGridView et je dois cocher la CheckBoxColumn si un lien existe dans ma BDD.
    Or, les cases a cocher ne se cochenet pas et restent vides pas sur mon ecran alors que je sais grace au debugger que je passe bien dans ma boucle qui coche les Checkbox. La colonne n'est pas en read only et lorsque j'assaye de cocher les cases a partir d'un autre event (autre que le Load de mon User Control) comme DataGridView.MouseHover les cases se cochent bien.
    Impossible de les cocher a partir du Load...

    En gros voici le code :

    Chargement du User Control

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void usc_Conditions_Load(object sender, EventArgs e)
    {
        // Remplit les DataSets    
        t_CONDITIONTableAdapter.Fill(dS_Condition.T_CONDITION);
        t_PROGRAMTableAdapter.FillByProgramID(dS_Program.T_PROGRAM, this.ProgramID);
        // Coche les bonne cases a cocher
        CocheCases(this.ProgramID);
    }
    Methode qui coche les bonnes cases :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void CocheCases(decimal ProgramID)
    {
        foreach (DataGridViewRow MyRow in dgv_Conditions.Rows)
        {
            // Recupere l'ID de la Row en cours       
            decimal ConditionID = Convert.ToDecimal(MyRow.Cells["CONDITION_ID"].Value.ToString());
     
            // Si le lien existe, coche la case
            if (ProgramInformation.ExistsConditionInProgram(ConditionID, this.ProgramID))
            {
                MyRow.Cells["SelectedRow"].Value = true;
            }
        }
    }
    - Les DataSet types sont bien remplis.
    - Si je lance CocheCases dans un autre Event que Load, cela fonctionne tres bien.
    - Si je teste la valeur d'une case a cocher qui vient d'etre cochee, cela m'affiche bien true.
    - Si j'essaye de raffraichir l'affichage, les cases a cocher ne sont toujours pas cochees.
    - Cela peut-il etre un probleme au niveau de l'affchage car la DataGridView est a l'interieur d'un User Control (formulaire) inclut lui meme dans une Form.

    Voila j'ai essaye pas mal de choses, si quelqu'un voit pourquoi ces CheckBox ne veulent pas apparaitre cochees sur l'Event Load, il peut me sauver la vie.

    Merci

  2. #2
    Membre confirmé Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Par défaut
    je te conseillerais de ne pas oublier
    Page.IsPostBack == false
    mets le a false sinon ton probleme sera tjur present car ton code s'execute cote serveur .....
    Moi j'vais fai la meme chose mais je lai fait en javascript...
    ok a Plus

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par mr.net
    je te conseillerais de ne pas oublier mets le a false sinon ton probleme sera tjur present car ton code s'execute cote serveur .....
    Moi j'vais fai la meme chose mais je lai fait en javascript...
    ok a Plus
    IL n'a à aucun moment précisé qu'il s'agit d'une appli Asp.Net; et rien de ce qu'il a écrit ne le laisse penser .. (un event MouseHover coté serveur j'ai jamais entendu parler de cela ....)

  4. #4
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    lol et tu as raison, ce n'est pas une appli web...

    Retour case depart, quelqu'un peut m'aider ?

    Je pense que le chargement du User Control est bizarre car si je fais :

    Dans la Form qui apelle le User control :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // initialise mon User Control et le place dans ma Form, ajoute les parametres
    LMA_Main_User_Controls.usc_Conditions Conditions = new LMA.LMA_Main_User_Controls.usc_Conditions();
    Conditions.Parent = this.tab_Conditions;
    TreeNode MyNode = (TreeNode)this.SelectedItem["TreeNode"];
    Conditions.ProgramID = Convert.ToDecimal(MyNode.Tag);
     
    // Lance manuellement la methode qui coche les cases a cocher
    CocheCase(this.ProgramID);
    Ben du coup la DataGridView n'est pas encore initialisee (Row.Count = 0) alors que je suis bien passe par le InitializeComponents et le Load de mon User Control des lors que j'ai fais new UserControl...

    Comment faire ?

  5. #5
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Quelqu'un a deja eu le meme comportement ?

    Le chargement d'un User Control bizarre ?

  6. #6
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Bonjour, je reviens sur mon precedent probleme car je le rencontre encore une fois et je n'ai toujours pas de solutions...

    Au chargement d'un User Control, je n'arrive pas a Checker des cases a cocher issues d'une DataGridView alors que l'appli passe bien dans ma methode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataGridViewLigne.MaColonne["Colonne"].Value = true;
    Si je cree un bouton "Selectionner les cases a cocher" dans ma Form qui va lancer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataGridViewLigne.MaColonne["Colonne"].Value = true;
    Cela fonctionne tres bien, la case a cocher est bien selectionnee. Mais j'ai besoin de faire cela au chargement du User Control (dans le Form Load).

    Toutes les idees sont les bienvenues.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2007, 08h52
  2. Réponses: 1
    Dernier message: 01/09/2006, 20h13
  3. [SGBD] [POO PHP 4.4.2] Problème mysql_query dans une fonction
    Par Djoul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 16/06/2006, 13h25
  4. [POO] Problème inclusion dans une classe
    Par LordBob dans le forum Langage
    Réponses: 11
    Dernier message: 22/11/2005, 15h21
  5. Réponses: 1
    Dernier message: 14/11/2005, 11h04

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