Bonjour,
Existerait-t'il un exemple de comment "binder" un combobox ?
Pour les datagrid, j'en trouve plein, mais pas pour les combos.
PS: j'utilise RIA services.
Merci
Bonjour,
Existerait-t'il un exemple de comment "binder" un combobox ?
Pour les datagrid, j'en trouve plein, mais pas pour les combos.
PS: j'utilise RIA services.
Merci
Euh...
Après tu peux aussi définir ton propre template d'affichage si tu veux afficher plusieurs choses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <ComboBox ItemsSource="{Binding Patati}" DisplayMemberPath="TaPropriete" />
C'est quoi ton soucis exactement ?
Pour les datagrids je fais :
et puis je lie les colonnes avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ItemsSource="{Binding Data, ElementName=source}"
Mon souci c'est que dans ma source, j'ai plusieurs tables et que je dois lié mon combo sur un champ déterminé d'une table (AchatTbl). De plus, le champ qu'il retourne (AchId) doit être différent du champ qu'il affiche (AchNom).
Code : Sélectionner tout - Visualiser dans une fenêtre à part <data:DataGridTextColumn x:Name="AchDate" Header="Date" Binding="{Binding AchDate}" IsReadOnly="True" Width="50" />
Merci pour ton aide
J'ai toujours pas compris.
Tu peux détailler la structure de ta source stp ?
Data c'est une liste de quoi ?
C'est quoi la structure des objets et quel champ tu veux afficher ?
J'comprends pas tout, mais souvent ça marche...
Voici ce que je mets dans mon xaml:
Est-ce que ça t'aide ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <riaControls:DomainDataSource x:Name="source" QueryName="GetCategoriesQuery" AutoLoad="True" LoadedData="source_LoadedData" Margin="0,0,0,168" Grid.RowSpan="2"> <riaControls:DomainDataSource.DomainContext> <domain:LaundryContext /> </riaControls:DomainDataSource.DomainContext> </riaControls:DomainDataSource>
Non ça m'aide pas
C'est quoi le type retournée par GetCategoriesQuery ?
Public Function GetCategoriesQuery() As System.Windows.Ria.Data.EntityQuery(Of Gentry.Web.Categorie)
Returns an EntityQuery for query operation 'GetCategories'.
Mon projet Web s'appelle Gentry.web mais ça, je me doute que tu le savais déjà![]()
Ca te donne quoi si tu tapes ça ?
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<ComboBox ItemsSource="{Binding Data, ElementName=source}" DisplayMemberPath="AchDate" />
Désolé, j'avais pas vu que tu avais répondu !
Normalement je reçois un mail, mais pas toujours, pourquoi ?...
Non ton code ne change pas l'affichage.
En fait je t'ai dit que dans mon XAML, je définissait :
Il y a la dedans le
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <riaControls:DomainDataSource x:Name="source" QueryName="GetCategoriesQuery" AutoLoad="True" LoadedData="source_LoadedData" Margin="0,0,0,168" Grid.RowSpan="2"> <riaControls:DomainDataSource.DomainContext> <domain:LaundryContext /> </riaControls:DomainDataSource.DomainContext> </riaControls:DomainDataSource>qui est un query sur l'une des tables de ma source. Si je ne le mets pas, je n'ai aucunes données qui s'affichent dans mes dataGrids de ma page.QueryName="GetCategoriesQuery"
Par contre, avec çà, je vois dans mon combobox :1 étant l'identifiant de la catégorie. Quand j'ouvre le combo, toutes les catégories et identifiants sont bien présents.Categorie : 1
Si je change "GetCategoriesQuery" par "GetAchatsQuery", je vois bien tous mes achats.
Je pense donc qu'il faudrait pouvoir affiner lepar un truc du style ItemsSource="{Binding Data, ElementName=source.Achats}" mais ça ne fonctionne pas.ItemsSource="{Binding Data, ElementName=source}"
Désolé mais je comprends toujours pas...
Ici ton DomainDataService récupère des Catégories, tu ne pourra afficher dans ton ComboBox que des catégories.
Si tu veux afficher des achats, ben faut créer un nouveau DomainDataService qui te retournera les Achats (via le QueryName).
Imaginons que ta classe Category retournée par ta méthode GetCategories contiennent 2 champs : Name et Id.
Dans ton Comboxbox tu veux afficher le Name, mais avoir l'Id en tant que valeur "derrière".
Alors tu vas déclarer ton XAML comme ça
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part <ComboBox ItemsSource="{Binding Data, ElementName=source}" ValueMemberPath="Id" DisplayMemberPath="Name" />
D'ailleurs j'ai toujours pas compris ta comparaison avec le DataGrid...
En fait si tu pouvais expliquer clairement ce que tu veux afficher dans ton ComboBox ça m'aiderait...
Je comprend que tu ne comprennes pas puisque de mon coté, je ne comprends pas non plus.
Cest pourquoi au début de mon post je demandais s'il n'existait pas un exemple de comment binder un combobox.
Dans le XAML doit on définir un ou plusieurs riaControlsomainDataSource ?
Ce que je constate avec les datagrids, c'est qu'en définissant un seul riaControlsomainDataSource avec un QueryName="GetCategoriesQuery, j'arrive à afficher des datagrids basés sur des catégories mais aussi basés sur des achats, ou encore des vêtements. Pour afficher les autres, il me suffit de faire dans
alors que si j'ai plusieurs comboBox, je n'arrive pas à définir l'itemsSource de chacun ni les éléments que je veux voir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs) source.DomainContext.Load(CType(source.DomainContext, LaundryContext).GetCategoriesQuery()) source.DomainContext.Load(CType(source.DomainContext, LaundryContext).GetVetementsQuery()) source.DomainContext.Load(CType(source.DomainContext, LaundryContext).GetClientsQuery()) source.DomainContext.Load(CType(source.DomainContext, LaundryContext).GetAchatsQuery()) End Sub
Bon faudrait vraiment que je me mette à RIA Services ^^
Et si dans ton ItemsSource tu mets
Dans ton dernier post plus haut : c'est utile de faire plusieurs Load les uns après les autres ? Ils ne vont pas "s'écraser" les uns les autres ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ItemsSource="{Binding DomainContext.Achats, ElementName=source}"
Magique
Qu'est-ce que ce serait si tu te mettais aux RIA services
Je vois effectivement Achat : 1
C'est quoi de l'intuition ? de la chance ? ou du génie ?
N'empêche que j'aimerais tellement comprendre "comment faire" plutôt que de simplement "faire".
Enfin, pour répondre à ta question:
Non, ils ne s'écrasent pas, mais si j'ai plusieurs tables dans ma db, je peux décider desquelles je mets dans mon contexte. Je peux aussi par exemple ne prendre que les achats > qu'une certaine date via unc'est utile de faire plusieurs Load les uns après les autres ? Ils ne vont pas "s'écraser" les uns les autres ?A ce moment, effectivement, celà va écraser "TousMesAchats" par "MesAchatsPlusGrandsQuuneCertaineDAte"source.DomainContext.Load(CType(source.DomainContext, LaundryContext).GetAchatsPlusGrandQueDateQuery())
Ma conclusion, mets toi au RIA services pour que tu puisses nous expliquer![]()
Partager