Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1173 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Databinding sur 2 combox en WPF

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Databinding sur 2 combox en WPF

n°2024375
Minigeek
Posté le 22-09-2010 à 09:50:24  profilanswer
 

Bonjour à tous !
 
J'ai un problème de databinding dans mon application WPF.
 
Pour résumer, mon application se connecte à une base de données Oracle dont les tables qui m'intéressent sont :
- LIAISON_INF (LIAISON, ...)
- CHAUSSEE_INF (LIAISON_INF__LIAISON, SENS, ...)
 
LIAISON est donc clé primaire de LIAISON_INF et devient clé étrangère dans CHAUSSEE_INF. Dans cette table, la clé primaire est (LIAISON_INF__LIAISON, SENS).
 
 
LIAISON représente des autoroutes (par exemple A1, A6...) et SENS, le sens sur lequel on travaille (de 1 à 4). Mais toutes les liaisons n'ont pas 4 sens, donc je voudrais récupérer les sens qui correspondent à la liaison choisie.
 

Code :
  1. DataSet dt = Database.ExecSelect("select DISTINCT LIAISON from LIAISON_INF", "LIAISON_INF" );
  2. dt = Database.AddToDataset("select LIAISON_INF__LIAISON, SENS from CHAUSSEE_INF", "CHAUSSEE_INF", dt);
  3.                
  4. DataColumn colLiaison = dt.Tables["LIAISON_INF"].Columns["LIAISON"];
  5. DataColumn colChaussee = dt.Tables["CHAUSSEE_INF"].Columns["LIAISON_INF__LIAISON"];
  6. DataRelation relation = new DataRelation("LiaisonToChaussee", colLiaison, colChaussee);
  7. dt.Relations.Add(relation);
  8. lstLiaison.DataContext = dt.Tables["LIAISON_INF"].DefaultView;
  9.      
  10. //  FONTIONNE MAIS RENVOIE TOUTES LES VALEURS DE 'SENS'
  11. lstSens2.DataContext = dt.Tables["CHAUSSEE_INF"].DefaultView;


 
 
Je remplis mon DataSet, j'affiche tous les noms des liaisons dans ma combobox (lstLiaison) , jusque là pas de problème.
Pour afficher la liste des sens correspondants par contre ça coince... J'ai trouvé un début de solution expliquant qu'il faut utiliser une DataRelation, mais l'exemple était en Windows Form et ça n'a pas l'air de fonctionner exactement de la même façon en WPF...
 
Et faudrait pas que j'oublie mon XAML quand même...
 

Code :
  1. <ComboBox Height="23" HorizontalAlignment="Left" Margin="648,12,0,0" Name="lstLiaison" VerticalAlignment="Top" Width="120" 
  2.       ItemsSource="{Binding}"
  3.       DisplayMemberPath="LIAISON"
  4.       IsSynchronizedWithCurrentItem="True" />
  5. <ComboBox Height="23" HorizontalAlignment="Left" Margin="392,30,0,0" Name="lstSens2" VerticalAlignment="Top" Width="120"
  6.       ItemsSource="{Binding}"
  7.       DisplayMemberPath="SENS"
  8.       IsSynchronizedWithCurrentItem="True" />


 
Vous allez me dire "tu crées une relation mais tu ne l'utilises pas...", mais j'ai essayé de l'utiliser sans résultat convaincant...

mood
Publicité
Posté le 22-09-2010 à 09:50:24  profilanswer
 

n°2024502
Minigeek
Posté le 22-09-2010 à 14:58:50  profilanswer
 

J'ai fini par trouver une solution :)
 

Code :
  1. <ComboBox Height="23" Margin="0,12,210,0" Name="lstLiaison" VerticalAlignment="Top"
  2.                   ItemsSource="{Binding}"
  3.                   DisplayMemberPath="LIAISON"
  4.                   IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Left" Width="120" />
  5.        
  6.         <ComboBox Height="23" Margin="0,41,210,0" Name="lstSens" VerticalAlignment="Top"
  7.                   ItemsSource="{Binding LiaisonToChaussee}"
  8.                   DisplayMemberPath="SENS"
  9.                   IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Left" Width="120" />


 

Code :
  1. DataSet dt = Database.ExecSelect("select DISTINCT LIAISON from LIAISON_INF", "LIAISON_INF" );
  2.                 dt = Database.AddToDataset("select LIAISON_INF__LIAISON, SENS from CHAUSSEE_INF", "CHAUSSEE_INF", dt);
  3.                
  4.                 DataColumn colLiaison = dt.Tables["LIAISON_INF"].Columns["LIAISON"];
  5.                 DataColumn colChaussee = dt.Tables["CHAUSSEE_INF"].Columns["LIAISON_INF__LIAISON"];
  6.                 DataRelation relation = new DataRelation("LiaisonToChaussee", colLiaison, colChaussee);
  7.                 dt.Relations.Add(relation);
  8.                 DataContext = dt.Tables["LIAISON_INF"];


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Databinding sur 2 combox en WPF

 

Sujets relatifs
Déploiement d'une application WPF pour navigateurProblème WPF / Entity Framework / Data Binding
[C# & WPF] Taille d'une imageWindows Forms et Object DataBinding
[WPF] Databinding et combinaison de Treeview et Listview[ASP.Net] A quoi sert la méthode DataBinding pour un label ?
FlowDocument with DataBindingFlowDocument with DataBinding
[RESOLU] checkBox et databinding 
Plus de sujets relatifs à : Databinding sur 2 combox en WPF


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR