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 :

Gere le binding d'une checkbox [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Par défaut Gere le binding d'une checkbox
    bonjour,
    Mon problème est très simple , je n'arrive pas a savoir (dans mon code) si la checkbox est checked ou non, je manque cruellement de méthode et je n'ai donc aucune idée de comment récupérer le binding de ma check box.

    voici mon problème illustré

    Nom : illustration.png
Affichages : 390
Taille : 46,0 Ko


    Donc je voudrais que lorsque je click sur fournisseur ma listeView ce mettent a jour, vous l'aurez compris , pour ce faire j'ai donc besoin de savoir si ma checkbox est coché ou non or malgre toute mes recherche impossible de trouver comment faire en c#

  2. #2
    Membre confirmé
    Avatar de guatto
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 179
    Par défaut
    Bonsoir,

    je ne suis pas doué en C# et je suppose que c'est du (WPF) donc je te donne une petite astuce à essayer, c'est en VB.net (WPF) mais tu devrais être capable de l'adapter à ton code :

    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
     
        Private Sub CheckBox1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles CheckBox1.Click
     
            If CheckBox1.IsChecked = False Then
     
               // s'il est unchecked
     
            Else
     
               // s'il est checked
     
            End If
     
     
        End Sub
    Bonne chance !

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Par défaut
    Merci pour l'info mais mon problème et un poil plus complexe
    Nom : illust.png
Affichages : 249
Taille : 60,8 Ko

    comme on peut le voir j'arrive a savoir si mon bouton est sectionné mais je n'arrive pas a transférer ma variable checkbox_fournisseur_org dans la Class FicheTiersService.svc.cs

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    Bonjour quinroux,

    Tu dit manquer de "méthode" (je ne comprend pas trop, tu veux dire méthodologie/expérience?).

    A première vue j'ai plus l'impression qu'il te manque une vision architecturale/abstraite/fonctionnelle de ton application.


    Je voisque tu utilise le couple C#/WPF avec du binding => utilise tu le pattern MVVM?
    MVVM => binding
    MVC => event

    le mélange des 2 risque de devenir compliqué à gérer si le projet à pour but de vivre quelques années.



    Ensuite tu dit vouloir transmettre ta variable booléenne checkbox_fournisseur_org à la classe FicheTiersService.svc.cs.

    Soyons précis, FicheTiersService.svc.cs est un fichier, et au vue de l'extension, FicheTiersService est un webservice, peux-tu nous décrire la relation entre ce service et ton application/ta variable?



    Petit conseil, réalise un schéma SUR PAPIER de ton application avec une représentation de chaque assembly et de chaque sous-partie de ton assembly (accès bdd, webservice, UI, controler) et ensuite tu flèche les liens entre ces sous-partie.
    Le fait de dessiné ton appli va permettre de rendre un peux plus concrètes ce que tu imagine et t'offrir ainsi un autre regard.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Par défaut
    bonjour TheBlackReverand,
    en effet j'ai peu d’expérience en c# , j'essaye effectivement d'utiliser le pattern mvvm avec beaucoup de difficulté
    pour ce qui est du fichier FicheTiersService.svc.cs voila a quoi il ressemble
    Nom : Sans titre.png
Affichages : 421
Taille : 42,5 Ko

    ce service me permet de crée des méthodes ici Getfiche que j'utilise par la suite dans une listview et qui me permet d'afficher les info que j'ai sélectionné dans ma bdd , d'autre part je me retrouve avec ma checkbox qui normalement lorsqu’elle est sélectionné devrais me modifier ma requête sql

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    Ok je comprend mieux.

    Tu confonds la partie client et serveur de ton application.

    le projet "BDD" doit être déployé sur un PC_1 afin de mettre à disposition des données extraite de la bdd via un service WCF.

    le projet "EditionTiers" doit être déployé sur les PC_2, PC_3.... et vont consommer le service WCF exposer par PC_1.


    Ainsi FicheTiersService est le service (le serveur)
    ET je présume que ServiceReferenceTiers est une référence à FicheTiersService, c'est le client.


    Tu ne peux donc pas attaquer FicheTiersService directement. Ton interface attaque ServiceReferenceTiers qui va transmettre l'info, via le réseau à FicheTiersService.
    Si cela te semble inconnu ou même flou je te recommande de suivre quelques tuto sur la notions de client/serveur.


    Ensuite si tu veux faire de MVVM tu ne dois normalement pas avoir d'event (comme ton checked) mais plutot des Model lié par binding à tes controles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class ModelUI
    {
       bool critereFournisseurActive;
    }
    et dans le XAML de ta checkbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Checked="{Binding critereFournisseurActive}


    Pourquoi faire le choix de WPF et MVVM?

    Si tu est vraiment débutant et libre du choix technologique je te recommande de commencer avec du WinForms/MVC.
    Beaucoup plus simple à appréhender pour le début et fort bien adapter aux petits projets.


    Sinon quelque tuto pour parfaire ta compréhension du MVVM car ce que nous montre n'est pas MVVM (pas de DataContext et présence de code behind)
    http://www.codeproject.com/Articles/...l-for-Absolute

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Par défaut
    ok merci je crois que je suis moins perdu ,
    par contre je n'arrive toujours pas a savoir si ma checkbox et cochée ou non

    donc j'ai trouver le client il se trouve dans le fichier client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
           public ficheTiers()
            {
                var client = new ServiceReferenceTiers.FicheTiersServiceClient();
                ListeDeFichesOrg = new ObservableCollection<FicheTier>(client.Getfiche());
                ListeDeFichesPers = new ObservableCollection<FicheTier>(client.GetfichePers());
                ListeDeFichesUrl = new ObservableCollection<FicheTier>(client.GetficheUrl());
                CheckBox_Fournisseur_org = new bool();
                client.Close();
     
     
            }

    mais ensuite je n'arrive pas a l'envoie dans mon fichier serveur car bool ne prend pas de paramètre

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBox_Fournisseur_org = new bool();
    où as-tu vu cette syntaxe? je suis curieux
    un booléen ne s’instancie pas....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBox_Fournisseur_org = true;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBox_Fournisseur_org = false;
    si je lit ton code tels quels je comprend "instancier une classe 'bool' et la stocker dans la variable CheckBox_Fournisseur_org, qui, vu son nom, réprésente le controle 'checkbox' définissant si un fournissieur et de type 'org'"

    je pense que ta checkbox n'est pas un bool? mais une checkbox

    attention à ton nommage


    Le développement informatique est quelque chose de très structuré et structurant.



    J'essaie de te mettre sur la voie depuis le début mais chaud, c'est pas contre toi, c'est juste que tu t'attaque à quelque chose de trop gros pour toi pour le moment, je pense qu'il te manque des bases solides pour passé sur des projets plus volumineux/complexe.


    Sinon pour ta demande d'origine.

    1) Tu dois créé un Model que tu va instancier et stocker dans le DataContext de ta View.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class MainWindowModel
    {
       public bool CritereFournisseurIsCheck { get; set;}
    }
    2) Tu dois lié par Binding la propriété "Checked" de ta checkbox à la propriété CritereFournisseurIsCheck de l'instance de MainWindowModel stocké dans le DataContext de ta MainWindow

    3) Tu doit modifier la méthode dans FicheTierService pour accepté un paramètre booléen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class FicheTierService
    {
       public ObservableCollection<FicheTier> GetFiche(bool critereFournisseurIsActivate)
       {
          ......
       }
    }
    4) Tu dois mettre à jour ServiceReferenceTiers pour prendre en compte le changement

    5) Dans ton Model, tu li une ICommand à un bouton de ta MainWindow et tu lui fait faire appel à ServiceReferenceTiers.GetFiche(CritereFournisseurIsCheck)



    Pour info, un service ce doit d'être neutre et donc ObservableCollection<FicheTier> n'est pas un bon choix, car si demain on te demande de faire un site web tu fait comment? ton service et inexploitable, utilise donc un tableau : FicheTier[] qui sera converti par ton UI en ObservableCollection<FicheTier> afin de correspondre à ces besoins "personnels".


    Mais je te recommande fortement de renforcer tes connaissances,

    Bon courage,

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Par défaut
    Merci beaucoup pour ces infos je vais pouvoir réussir

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Par défaut
    Voila j'ai enfin réussit comme quoi un bonne nuit de sommeil c'est réparateur, maintenant que j'ai la solution je me trouve très con ^^
    la voici
    pour la partie xaml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsChecked="{Binding CheckBox_Fournisseur_org}"
    pour la partie c#

    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
    24
    25
    26
    27
    28
    29
    30
       public bool CheckBox_Fournisseur_org
            {
                get
                {
                    return checkBox_Fournisseur_org;
                }
     
                set
                {
                    if (checkBox_Fournisseur_org != value)
                    {
                        checkBox_Fournisseur_org = value;
                        NotifyPropertyChanged();
                        if (checkBox_Fournisseur_org == true)
                        {
                            ficheTiersdefault();
                        }
                    }
                }
            }
     
     public void ficheTiersdefault()
            {
     
                client = new ServiceReferenceTiers.FicheTiersServiceClient();
                ListeDeFichesOrg = new ObservableCollection<FicheTier>(client.Getfiche());
                    ListeDeFichesPers = new ObservableCollection<FicheTier>(client.GetfichePers());
                    ListeDeFichesUrl = new ObservableCollection<FicheTier>(client.GetficheUrl());
                    client.Close();
                }

    encore un grand merci a toi TheBlackReverand pour ta patient et tes explication

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    Pas de problème par contre je pense que tu as un if de trop

    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
      public bool CheckBox_Fournisseur_org
            {
                get
                {
                    return checkBox_Fournisseur_org;
                }
     
                set
                {
                    if (checkBox_Fournisseur_org != value)
                    {
                        checkBox_Fournisseur_org = value;
                        NotifyPropertyChanged();
                        //if (checkBox_Fournisseur_org == true)
                        //{
                            ficheTiersdefault();
                        //}
                    }
                }
            }
    car je présume que lorsque tu décoche, tu dois revenir à l'affichage précédent, il faut donc relancer le chargement de l'UI


    et n'oubli pas de transmettre checkBox_Fournisseur_org à ton service

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void ficheTiersdefault()
            {
     
                client = new ServiceReferenceTiers.FicheTiersServiceClient();
                ListeDeFichesOrg = new ObservableCollection<FicheTier>(client.Getfiche(checkBox_Fournisseur_org));
                    ListeDeFichesPers = new ObservableCollection<FicheTier>(client.GetfichePers(checkBox_Fournisseur_org));
                    ListeDeFichesUrl = new ObservableCollection<FicheTier>(client.GetficheUrl(checkBox_Fournisseur_org));
                    client.Close();
                }
    (je ne sais pas trop quelle méthode l'utilise, à toi de voir le besoin)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Readonly sur une checkbox
    Par Oluha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/02/2005, 11h09
  2. [FLASH MX] Police d'une Checkbox
    Par n_tony dans le forum Flash
    Réponses: 5
    Dernier message: 08/12/2004, 12h04
  3. Etat coché ou décoché d'une checkbox
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/10/2004, 16h56
  4. [XML][XSL]afficher une checkbox cochée
    Par kirk80 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/09/2004, 17h49
  5. [struts] mémorisation d'une checkbox avec cookie
    Par rocco dans le forum Struts 1
    Réponses: 3
    Dernier message: 22/04/2004, 12h39

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