Publié lundi 5 avril 2010 22:50 par Audrey

[RIA Services] DomainContext et Code-Behind


Dans mes deux articles précédents (ici et ) parlant de RIA Services, à chaque fois, je vous ai montré du code XAML, mais il faut savoir que tout cela est aussi possible avec des DomainContext en code-behind. Comme dans les deux articles précédents, pour mes exemples je vais me servir de la base de données Northwind avec les tables Customers et Orders.

Pour le DomainContext sans paramètres : 

On souhaite lister tous les clients de la table Customers dans une ComboBox.

Côté XAML on ajoute un contrôle ComboBox avec un ItemTemplate pour pouvoir afficher le ContactName pour chaque Customer :

<UserControl.Resources>
  <DataTemplate x:Key="DataTemplateComboBoxItelCustomers">
    <TextBlock Text="{Binding ContactName}" />
  </DataTemplate>
</UserControl.Resources>


<ComboBox x:Name="CbCustomers" ItemTemplate="{StaticResource DataTemplateComboBoxItelCustomers}" />

Côté code-behind, on ajoute là où l'on souhaite charger les données, le code suivant :

NorthwindContext contextCustomers;

public MainPage()
{
  InitializeComponent();
  contextCustomers = new NorthwindContext();
}

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
  CbCustomers.ItemsSource = contextCustomers.Customers;
  contextCustomers.Load(contextCustomers.GetCustomersQuery());
}


David Rousset l'explique très bien dans sa série d'articles consacrée à .NET RIA Service sur son blog.


Pour le DomainContext avec Include : 

Côté XAML on va s'abonner à l'évènement SelectionChanged sur notre ComboBox afin de savoir quand un Customer est sélectionné :

<ComboBox x:Name="CbCustomers" SelectionChanged="CbCustomers_SelectionChanged" />
<my:DataGrid x:Name="dgOrders" />


Côté Code-Behind, il faut tout d'abord ajouter le tag Include dans le fichier Metadata comme indiqué dans mon post précédent, et modifier la requête de la méthode GetCustomers pour y inclure les Orders.

Ensuite il faut ajouter le code suivant :

public MainPage()
{
  InitializeComponent();
  contextCustomers = new NorthwindContext();
}

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
  CbCustomers.ItemsSource = contextCustomers.Customers;
  contextCustomers.Load(contextCustomers.GetCustomersQuery());
}

private void CbCustomers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  dgOrders.ItemsSource = contextCustomers.Orders.Where(c => c.CustomerID == ((Customers)CbCustomers.SelectedItem).CustomerID);
}


Et les Orders correspondant au Customer sélectionné pourront s'afficher dans la DataGrid.


Pour le DomainContext avec paramètres : 

Côté Code-Behind, il faut tout d'abord créer une nouvelle méthode qui prend en paramètre le CustomerId afin de pouvoir sélectionner les Orders que l'on souhaite afficher :

public IQueryable<Orders> GetOrdersWithParam(string customerId)
{
  return this.ObjectContext.Orders.Where(c => c.CustomerID == customerId);
}


Ensuite il faut ajouter le code suivant :

NorthwindContext contextCustomers;
NorthwindContext contextOrders;

public MainPage()
{
  InitializeComponent();
  contextCustomers = new NorthwindContext();
  contextOrders = new NorthwindContext();
}

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
  CbCustomers.ItemsSource = contextCustomers.Customers;
  contextCustomers.Load(contextCustomers.GetCustomersQuery());
}

private void CbCustomers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  dgOrders.ItemsSource = contextOrders.Orders;
  contextOrders.Load(contextOrders.GetOrdersWithParamQuery(((Customers)CbCustomers.SelectedItem).CustomerID));
}


Et ici aussi les Orders correspondant au Customer sélectionné pourront s'afficher dans la DataGrid.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01