> Tech > Connecter deux Web Parts

Connecter deux Web Parts

Tech - Par Renaud ROSSET - Publié le 23 novembre 2011
email

Le but maintenant va être simple. Nous aimerions que quand nous sélectionnons un film dans la « WebPart » affichant l’entité « Film », la « Web Part Personne » soit mise à jour pour n’afficher que les acteurs du film en question.

Connecter deux Web Parts

Pour cela, nous devons faire une connexion entre les deux « Web Parts ».

Si vous essayez de le faire actuellement, cela ne fonctionnera pas, car une « Business Data List » ne peut être connectée qu’avec une « Business Data Related List » (en ce qui concerne les listes en tout cas). Remplacez donc la « Web part Personne » par une « Business Data Related List ».

Le souci ici est que lorsque vous voulez sélectionner l’entité « Personne », aucun « BCS » n’apparaît (en tout cas, aucun de notre solution). C’est tout à fait normal. Pour qu’une « Business Data Related List » puisse accueillir une entité, il faut que celle-ci soit connectable. Et pour rendre une entité connectable, il faut lui faire une association via Visual Studio. Il y a plusieurs types d’association, ici, nous utiliserons la plus simple. Retournez donc dans « Visual Studio » ouvrez votre « BCS », sélectionnez « Association » dans la « Toolbox » et reliez l’entité « Film » à l’entité « Personne ».

La fenêtre qui apparaît va nous permettre de définir l’association. Commencez par lui définir un nom. Ici, nous dirons « ActorsOfFilmAssociation ». L’association ne se basera pas sur une clé étrangère ici, car la liaison entre les films et les acteurs se fait dans la table « films_acteurs » que nous n’avons pas représenté sous forme d’entité. Décochez donc la première case à cocher.

En dessous, vous avez alors les différentes associations que nous pouvons faire. Ici, nous allons laisser « AssociationNavigator », mais nous n’allons en laisser qu’une. Avant de savoir laquelle, nous devons définir ce qu’est une « AssociationNavigator ». En fait, quand ce type d’association est basé sur une entité A vers une entité B, une méthode va être créée pour l’entité A qui va permettre de renvoyer une collection d’objet de type B sur base de l’identificateur de l’entité A. Vous allez mieux comprendre. Configurez votre association de cette manière : voir figure 15.

Cela aura pour effet d’ajouter une fonction « StaffOfFilm » à l’entité « Film ». Si vous faites un clic droit sur cette méthode et que vous affichez le code, vous verrez la fonction suivante :

public static IEnumerable StaffOfFilm(int id_film)
{
throw new System.NotImplementedException();
}

Tout l’intérêt de l’association prend donc son sens. Cette méthode va permettre de renvoyer la liste (« IEnumerable ») des acteurs (« Personne ») ayant joué dans le film identifié par le paramètre (« id_film »). Avant d’implémenter le contenu de cette fonction, nous devons implémenter la fonction qui permettra de récupérer ces valeurs. Ouvrez donc la classe « DbFilm » et ajoutez la fonction suivante :

public static List GetAllPersonnesOfFilm(int id_film)
{
List personnes = null;
using (DataSet dataSet = new DataSet())
{
using (MySqlConnection connection = new MySqlConnection(Helper.cString))
{
connection.Open();
string request = string.Format(@ »SELECT id_personne, nom, prenom, image
FROM personnes
WHERE id_personne IN (
SELECT id_acteur
FROM films_acteurs
WHERE id_film = {0}
) », id_film);
using (MySqlDataAdapter adapter = new MySqlDataAdapter(request, connection))
{
adapter.Fill(dataSet, « Personnes »);
}
}
if (dataSet.Tables[« Personnes »].Rows.Count == 0)
throw new Exception(« Aucune personne »);
personnes = new List(dataSet.Tables[« Personnes »].Rows.Count);
foreach (DataRow row in dataSet.Tables[« Personnes »].Rows)
{
personnes.Add(new Personne
{
Avatar = row[« image »].ToString(),
Id = int.Parse(row[« id_personne »].ToString()),
Nom = row[« nom »].ToString(),
Prenom = row[« prenom »].ToString()
});
}
}
return personnes;
}

Revenez maintenant dans votre « BCS », faites un clic droit sur la méthode « StaffOfFilm » et tapez ceci :

return DbFilm.GetAllPersonnesOfFilm(id_film);

Vous pouvez maintenant redéployer votre solution. Cette fois, quand vous allez essayer de configurer votre « Business Data Related List », l’entité « Personne » apparaîtra. Une fois sélectionnée, connectez cette « Web Part » à l’autre « Web part » de la page : voir figure 16.

Sauvez maintenant le contenu de votre page. Etant donné que vous avez modifié les entités de votre « BCS », vous allez devoir retourner dans la centrale d’administration pour redonner les permissions nécessaires à votre compte utilisateur pour pouvoir exploiter votre « BCS ».

Une fois cela fait, revenez sur votre page d’accueil, vous remarquerez une petite modification. Effectivement, une double flèche apparaît en face de chaque ligne du tableau. SI vous cliquez dessus, la page se recharge et, automatiquement, la « Web Part Personne » affichera les acteurs ayant joué dans ce film. Vous pouvez également voir que la ligne correspondant au film sélectionné est en bleu et l’icône est devenue noire.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis d'experts et témoignages clients et ainsi, retrouvez les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et collaboration, Impression et capture et Infrastructure.

Tech - Par Renaud ROSSET - Publié le 23 novembre 2011