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 :

Problème databinding sur combobox


Sujet :

Silverlight

  1. #1
    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 Problème databinding sur combobox
    Bonsoir,

    J'utilise SL4, RIA Service, EF et SqlServer.

    j'ai simplement une table Personnels et une table Hotels avec une association
    (PersonnelID dans Hotels)

    J'ai une datagrid + grid avec la présence des différents champs d'un hotel.

    Je souhaite avoir une combobox proposant le choix de la personne ( personnel ) qui est lié à l'hotel (Hotels).

    J'arrive à lister mes personnes dans ma combobox mais impossible de faire apparaitre la personne lié à l'hotel sélectionné dans ma datagrid.

    PS : j'utilise bien [include] pour consommer mon association.

    Voilà le code si quelqu'un pourrais y voir une solution Merci d'avance.

    Code xml : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <navigation:Page
      x:Class="PortailSMCOM.Home" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
      mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"  
      Style="{StaticResource PageStyle}" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" xmlns:my="clr-namespace:PortailSMCOM.Web"
        xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
     
      <Grid x:Name="LayoutRoot">
        <ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}" >
     
          <StackPanel x:Name="ContentStackPanel">
     
            <TextBlock x:Name="HeaderText" Style="{StaticResource HeaderTextStyle}" 
                               Text="{Binding Path=ApplicationStrings.HomePageTitle, Source={StaticResource ResourceWrapper}}"/>
            <TextBlock x:Name="ContentText" Style="{StaticResource ContentTextStyle}" 
                               Text="Home page content"/>
     
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="29" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
     
                        <sdk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding ElementName=hotelsDomainDataSource, Path=Data}" Name="hotelsDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" IsReadOnly="True">
                            <sdk:DataGrid.Columns>
                                <sdk:DataGridTextColumn x:Name="nomColumn" Binding="{Binding Path=Nom}" Header="Nom" Width="300" />
                                <sdk:DataGridTextColumn x:Name="adresseColumn" Binding="{Binding Path=Adresse}" Header="Adresse" Width="600" />
                                <sdk:DataGridTextColumn x:Name="telColumn" Binding="{Binding Path=Tel}" Header="Tel" Width="Auto" />
                                <sdk:DataGridTemplateColumn x:Name="noteColumn" Header="Note" Width="Auto">
                                    <sdk:DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <toolkit:Rating Value="{Binding Note}" HorizontalAlignment="Left" ItemCount="5"  VerticalAlignment="Top" SelectionMode="Continuous" IsReadOnly="True" DisplayMemberPath="Note"  />
                                        </DataTemplate>
                                    </sdk:DataGridTemplateColumn.CellTemplate>
                                </sdk:DataGridTemplateColumn>
                            </sdk:DataGrid.Columns>
                        </sdk:DataGrid>
                        <sdk:DataPager Grid.Row="1" Name="dataPager1" PageSize="20" Source="{Binding ElementName=hotelsDomainDataSource, Path=Data}" />
     
                    </Grid>
                    <Grid DataContext="{Binding ElementName=hotelsDomainDataSource, Path=Data}" Name="grid1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="530" />
                            <ColumnDefinition Width="349*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="29" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <sdk:Label Content="Adresse:" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <TextBox Grid.Column="1" Grid.Row="1" Height="30" HorizontalAlignment="Left" Margin="3,3,0,3" Name="adresseTextBox" Text="{Binding Path=Adresse, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}" VerticalAlignment="Center" Width="527" />
                        <sdk:Label Content="Commentaire:" Grid.Column="0" Grid.Row="7" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <TextBox Grid.Column="1" Grid.Row="7" Height="100" HorizontalAlignment="Left" Margin="3,3,0,3" Name="commentaireTextBox" Text="{Binding Path=Commentaire, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}" VerticalAlignment="Center" Width="523" />
                        <sdk:Label Content="Nom:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <TextBox Grid.Column="1" Height="27" HorizontalAlignment="Left" Margin="3,3,0,3" Name="nomTextBox" Text="{Binding Path=Nom, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}" VerticalAlignment="Center" Width="298" />
                        <sdk:Label Content="Note:" Grid.Column="0" Grid.Row="4" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <toolkit:Rating DisplayMemberPath="Note" Grid.Column="1" Grid.Row="4" ItemCount="5" SelectionMode="Continuous" Value="{Binding Note}"  Name="noteRating" Margin="0,0,404,0" />
                        <sdk:Label Content="Personnel:" Grid.Column="0" Grid.Row="6" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <ComboBox DisplayMemberPath="Nom" Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left"    SelectedItem="{Binding  PersonnelID, Mode=TwoWay}" ItemsSource="{Binding ElementName=personnelDomainDataSource, Path=Data}" Margin="3" Name="nomComboBox" VerticalAlignment="Center" Width="120">
     
                        </ComboBox>
                        <sdk:Label Content="Prix:" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <TextBox Grid.Column="1" Grid.Row="3" Height="30" HorizontalAlignment="Left" Margin="3,3,0,3" Name="prixTextBox" Text="{Binding Path=Prix, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" VerticalAlignment="Center" Width="60" />
                        <sdk:Label Content="Tel:" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <TextBox Grid.Column="1" Grid.Row="2" Height="30" HorizontalAlignment="Left" Margin="3,3,0,3" Name="telTextBox" Text="{Binding Path=Tel, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}" VerticalAlignment="Center" Width="120" />
                        <sdk:Label Grid.Column="0" Grid.Row="5" Content="Resto Present:" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                        <CheckBox Content="" Grid.Column="1" Grid.Row="5" Height="16" HorizontalAlignment="Left" IsChecked="{Binding Path=RestoPresent, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Margin="3,3,0,3" Name="restoPresentCheckBox" VerticalAlignment="Center" />
                        <Grid DataContext="{Binding ElementName=personnelDomainDataSource, Path=Data}" Grid.Column="1" Grid.Row="5" Grid.RowSpan="2" HorizontalAlignment="Left" Margin="194,4,0,0" Name="grid2" VerticalAlignment="Top">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <sdk:Label Content="Nom:" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
     
                        </Grid>
                        <Grid Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Margin="204,7,0,0" Name="grid3" VerticalAlignment="Top">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <sdk:Label Content="Prénom:" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
                            <TextBox Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Margin="3" Name="prénomTextBox" Text="{Binding Path=Personnel.Prénom, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}" VerticalAlignment="Center" Width="120" />
                        </Grid>
     
                    </Grid>
     
                    <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:Hotels, CreateList=true}" Height="0" LoadedData="hotelsDomainDataSource_LoadedData_3" Name="hotelsDomainDataSource" QueryName="GetHotelsQuery" Width="0">
                        <riaControls:DomainDataSource.DomainContext>
                            <my:SMCOMDomainContext/>
                        </riaControls:DomainDataSource.DomainContext>
                    </riaControls:DomainDataSource>
                    <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:Personnel, CreateList=true}" Height="0" LoadedData="personnelDomainDataSource_LoadedData_2" Name="personnelDomainDataSource" QueryName="GetPersonnelQuery" Width="0">
                        <riaControls:DomainDataSource.DomainContext>
                            <my:SMCOMDomainContext />
                        </riaControls:DomainDataSource.DomainContext>
                    </riaControls:DomainDataSource>
                </StackPanel>
     
     
            </ScrollViewer>
     
        </Grid>
     
    </navigation:Page>

  2. #2
    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
    Salut,

    C'est un problème que j'ai eu...

    l'itemsSource doitêtre défini pour chaque ligne de ton datagrid.

    Tu trouveras donc la résolution dans le post suivant http://www.developpez.net/forums/d84...n-code-behind/

  3. #3
    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
    merci pour ta réponse.

    Mais je ne pense pas que ce soit la solution, car enf ait ma combobox n'est pas dans la datagrid dans dans la grid contenant les détail de l'item sélectionné dans la datagrid.

    De plus l'itemsource à l'air d'être correct car je vois la liste du personnel mais simplement le selecteditem qui ne marche pas car je n'arrive pas a voir le personnel lié à l'hotel sélectionnée.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <ComboBox DisplayMemberPath="Nom" Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Loaded="_Loaded"   SelectedItem="{Binding  PersonnelID, Mode=TwoWay}" ItemsSource="{Binding ElementName=personnelDomainDataSource, Path=Data}" Margin="3" Name="nomComboBox" VerticalAlignment="Center" Width="120">
     
     <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:Hotels, CreateList=true}" Height="0" LoadedData="hotelsDomainDataSource_LoadedData_3" Name="hotelsDomainDataSource" QueryName="GetHotelsQuery" Width="0">
                        <riaControls:DomainDataSource.DomainContext>
                            <my:SMCOMDomainContext/>
                        </riaControls:DomainDataSource.DomainContext>
                    </riaControls:DomainDataSource>
                    <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:Personnel, CreateList=true}" Height="0" LoadedData="personnelDomainDataSource_LoadedData_2" Name="personnelDomainDataSource" QueryName="GetPersonnelQuery" Width="0">
                        <riaControls:DomainDataSource.DomainContext>
                            <my:SMCOMDomainContext />
                        </riaControls:DomainDataSource.DomainContext>
                    </riaControls:DomainDataSource>
                        </ComboBox>

  4. #4
    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
    J ai trouvé ceci qui m a l air intéressant

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

    Peut être un problème de chargement asynchrone je gratte plus sur le sujet demain.

  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
    Désolé, mais vu la description de ton problème, je pensais que c'était ça...


    Maintenant quand tu dis que tu utilises bien Include pour consommer ton association, peux -tu nous dire où ???

    Parce que le mettre dans ta fonction GetHotelsQuery ne suffit pas... tu dois aussi le mettre dans ton metadata !

    et la par magie, celà va apparaitre...

  6. #6
    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 l'include est bien placé dans le metadata aussi.

    Par ailleurs j'ai bien vérifié le bon fonctionnement du lien vers l'association vu que si j'affiche un des élements d'une personne ayant déclaré un hotel dans un edit pas de soucis celà s'affiche convenablement.

  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
    Punaise c'est dingue de galérer autant sur un truc comme cela!!

    Bon je résume ce que je veux faire peut etre que j'ai pas été assez claire.

    J'ai une entité A, j'ai une entité B. Elles sont associées.

    Une entité A peut avoir plusieurs entité B. ( généré automatiquement par Entity Framework)

    Je liste toutes mes entités B dans une datagrid. Puis sur la sélection du datagrid j'affiche les détails de l'entité B sélectionnée ( généré automatiquement par glisser déposé de source de donnée, affiché sous forme d'edit)

    Dans les détails de mon entité B je veux voir s'afficher une combobox affichant dans la selectedvalue un champs de l'entité A associé à l'entité B. Et bien sur afficher la liste de toutes les entités A dans les items. Pour pouvoir changer très facilement l'entité A lié à l'entité B.

    Pfiou ca à l'air compliqué mais c'est vraiment un truc qu'on doit avoir besoin un permanence dès lors qu'on utilise des associations entre entités, ce qui est très très souvent le cas pour ma part.

    Donc pour conclure j'ai trouvé différente facon de lister mes entités A dans ma combobox mais jamais je n'ai réussi à sélectionner l'entité A associée à mon entité B et c'est pas faute d'avoir essayer...

    Allez je desespere pas de trouver la solution sur ce forum regroupant les plus grand génie SL!!! (un peu de leche ca fait pas de mal )

  8. #8
    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
    Est-ce que ton problème ne ressemblerait pas au mien ?
    http://www.developpez.net/forums/d10...item-combobox/

    et qui n'a pas trouvé de réponse satisfaisante à mes yeux .

  9. #9
    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 j'ai le même problème, encore que...

    Si je transpose ma situation à tes objets j'arrive à mettre tout mes pays dans une combobox (grace à un domaindatasource listant les pays ) mais je n'ai jamais réussi à afficher le pays du contact courant.

    Pourtant j'arrive à afficher le nom du pays du contact courant en passant par une textbox mais du coup ce n'est pas du tout pratique pour le changement de pays pour un contact...

    Est ce que tu as strictement la même problématique?

  10. #10
    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
    Ben oui, c'est la même problématique,

    J'arrive bien à mettre tous mes pays dans mon combobox puisque si je clique dessus j'en vois la liste et je peux en sélectionner un.

    Par contre je n'arrive pas à faire afficher un item particulier de mon combobox (par exemple le pays qui est celui de mon utilisateur).

    Skyounet m'a bien proposé une solution par binding (que je n'arrive pas à implémenter), mais de toutes façons je voudrais une solution par code behind.

Discussions similaires

  1. Problème de DataBind() sur des DropDownList
    Par getz85 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 28/02/2008, 16h31
  2. Réponses: 1
    Dernier message: 19/02/2008, 15h55
  3. databinding sur combobox
    Par Mathieu.Nanoux dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/06/2007, 18h57
  4. [Débutant]Problème Listener sur combobox
    Par Houssem dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 09/04/2007, 15h06
  5. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 09h46

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