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

Silverlight Discussion :

Comment sélectionner un item dans un combobox ?


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut Comment sélectionner un item dans un combobox ?
    Bonjour,

    Problème simple en apparence et j'espère aussi dans la réalité.

    J'ai des utilisateurs et des pays. (id=1 pour France et id =2 pour Espagne
    Chaque utilisateur habite dans un pays.

    Lorsque je crée mon utilisateur, j'ouvre un formulaire qui me permet d'encoder les données de l'utilisateur. En plus, ce formulaire m'affiche un combo avec les pays (par défaut, mon combobox.

    Je crée donc par exemple:
    François Dieudonné 1 (pour France)
    et
    Miguel gonzales 2 (pour Espagne)

    Jusque là tout roule...

    Mon problème c'est quand j'ouvre ce même formulaire en mode modification, là, je voudrais que si je modifie Miguel gonzales, ce soit bien l'espagne qui s'affiche dans mon combobox, mais pas de chance, c'est la france qui s'affiche (ce qui est normal puisque mon domainDataSource de mon combobox est lié à la table pays et pas au pays de mon contact).

    Je voudrais donc faire "Si je suis en mode modification, sélectionne dans le combobox le pays de mon contact"

    J'essaye un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If myContact.CountryTbl IsNot Nothing Then
                    Me.cboCountry.SelectedItem = myContact.CountryTbl
                End If
    mais mon "Me.cboCountry.SelectedItem" contient Nothing avant que je ne lui affecte "myContact.CountryTbl"
    et bien qu'il accepte l'assignation, aussi après...

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Est-ce que ta liste de pays est chargée à l'ouverture de ton formulaire ou pas ?

    Si non (exemple un call asynchrone qui charge ta liste de pays) il faut binder le SelectedValue au lieu du SelectedItem sur ta ComboBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectedValue="{Binding Path=Pays, Mode=TwoWay}"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Oui, dans mon Xaml j'ai un domainDataSource qui me ramène les pays pour mon combobox et un autre qui me ramène les contacts...

    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
        <!--RIA Country France et Espagne-->
            <riaControls:DomainDataSource x:Name="CountryFEDS" QueryName="GetFranceEtEspagneQuery" LoadSize="2" AutoLoad="True" Margin="0,0,152,0"   >
                <riaControls:DomainDataSource.DomainContext>
                    <MonProjetLocal:J_Context/>
                </riaControls:DomainDataSource.DomainContext>
     
            </riaControls:DomainDataSource>
     
            <!--RIA Contact-->
            <riaControls:DomainDataSource x:Name="ContactDS" QueryName="GetContactTblQuery" LoadSize="24" AutoLoad="True" Margin="0,0,152,0"   >
               <riaControls:DomainDataSource.DomainContext>
                    <MonProjetLocal:J_Context/>
                </riaControls:DomainDataSource.DomainContext>
     
                <riaControls:DomainDataSource.SortDescriptors>
                    <riaControls:SortDescriptor PropertyPath="ContactLastName" Direction="Ascending"/>
                </riaControls:DomainDataSource.SortDescriptors>
     
     
            </riaControls:DomainDataSource>
    et puis plus loin, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    <ComboBox Name="cboCountry" DisplayMemberPath="CountryName"  ItemsSource="{Binding Data, ElementName=CountryFEDS}"  />
    Dans mon objet contact j'ai un lien vers ContactCountryId qui est l'ID de mon pays dans ma table contact (foreign key) ou alors j'ai aussi un lien vers l'objet "CountryTbl" complet qui est inclu dans chaque contactTbl.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Bonjour,

    j'essaye de binder comme me le suggérait Skyounet mon combobox sur le pays de mon contact de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Name="cboCountry" DisplayMemberPath="CountryName"  ItemsSource="{Binding Data, ElementName=CountryFBDS}" SelectedValue="{Binding Path=CountryTbl, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True}"  />
    L'itemSource est lié à CountryFBDS, un domainDataSource qui contient tous les pays qui s'affichent dans le combobox.
    J'essaye ensuite de lier la SelectedValue sur CountryTbl qui reprend le pays de mon contact.

    Je reçois le message suivant:

    Entity 'CountryTbl:1' cannot be attached to this EntityContainer because it is already attached to another EntityContainer

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Skyounet Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectedValue="{Binding Path=Pays, Mode=TwoWay}"

    Le code suivant ne crée pas d'erreur, mais le lien ne se fait pas non plus..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    <ComboBox Name="cboCountry"    DisplayMemberPath="CountryName"  ItemsSource="{Binding Data, ElementName=CountryFBDS, Mode=OneWay}" SelectedValue="{Binding Path=ContactCountryId, Mode=TwoWay}"  />
    c'est à dire que si je suis sur un contact avec un ContactCountryId à 2(Espagne) il va quand même m'afficher "France" dans le combo.

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Il te manque SelectedValuePath="Id" (avec Id le nom du champs Id)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Points : 40
    Points
    40
    Par défaut
    En effet cela ne marche pas, j'ai eu le même probleme, sans trouvé de solution sur le forum :

    http://www.developpez.net/forums/d10...ding-combobox/

    Pourtant j'ai bien trouvé une solution avec cela :

    http://jeffhandley.com/archive/2010/...-ComboBox.aspx

    Ca marche parfaitement bien et je te conseil cette solution.

    Voilà mon code au cas ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     <UserControl.Resources>
     
     
            <my:SMCOMDomainContext x:Key="SMCOMDomainContext" />
            <ex:ComboBoxDataSource   x:Key="ASource" 
                                    DomainContext="{StaticResource SMCOMDomainContext}" 
                                    OperationName="GetPersonnelQuery" >
            </ex:ComboBoxDataSource>
        </UserControl.Resources>
     
    <ComboBox DisplayMemberPath="Nom" Grid.Column="1" Grid.Row="6" Height="27" HorizontalAlignment="Left" SelectedValuePath="ID" 
                                  SelectedValue="{Binding Path=SelectedItem.PersonnelID, ElementName=hotelsDataGrid,  Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}"     ItemsSource="{Binding Data, Source={StaticResource ASource}}" ex:ComboBox.Mode="Async" Margin="3,3,0,3" Name="nomComboBox" VerticalAlignment="Center" Width="120">
     
                            </ComboBox>

    J'espere que cela t'aidera.

    a+

Discussions similaires

  1. [Flex4] Sélectionner un Item dans une ComboBox
    Par tlafont2607 dans le forum Flex
    Réponses: 1
    Dernier message: 01/04/2013, 19h57
  2. Comment dé-sélectionner un item dans menubar
    Par le_sayan dans le forum Débuter
    Réponses: 1
    Dernier message: 25/08/2010, 11h27
  3. Réponses: 4
    Dernier message: 17/12/2009, 14h41
  4. comment ajouter des items dans un combobox sous delphi?
    Par salimo79 dans le forum Débuter
    Réponses: 6
    Dernier message: 19/10/2009, 17h21
  5. Gwtext: comment ajouter un item dans ma combobox dynamiquement
    Par dadoukhane dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 03/07/2008, 17h42

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