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

ASP.NET MVC Discussion :

lister une table avec relation one-to-many


Sujet :

ASP.NET MVC

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2009
    Messages : 61
    Points : 59
    Points
    59
    Par défaut lister une table avec relation one-to-many
    bonjour,

    J'ai crée un ViewModel (ListUserViewModel.cs). Dans ce ViewModel j'ai crée une IList de la table "Profile". Cette table a une relation one-to-many avec la table "project".

    Dans le contrôleur, j'appelle le ViewModel et je l'envoi à la vue.

    Dans la vue, je met un foreach pour parcourir la table profile. Le souci viens de ma relation one-to-many. J'aimerai comptabiliser le nombre de projets par profil.

    J'ai essayé de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <table>
    <% foreach(var item in Model.profile) {%>
        <tr>
            <td><%:item.name %></td>
            <td><%:item.alias %></td>
            <td><%:item.listProject.Count %></td>
        </tr>
    item.listProject = la relation one-to-many dans le fichier de mapping (profile.cs).

    J'utilise Fluent NHibernate.

    J'ai pas le code sous la main, mais si vous avez besoin de plus de renseignements, je le met sur le post demain.

    Merci pour votre aide.

    Nicolas

  2. #2
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2009
    Messages : 61
    Points : 59
    Points
    59
    Par défaut Suite...
    Bonjour à tous,

    Le problème est résolu. En fait,tous ce passe au niveau du View Model
    Pour ceux que ca interesse, je vous montre comment j'ai fait (il doit y avoir mieux surement)

    J'ai une table Profiles, Projects et Artworks.
    1 profile peut avoir 1 ou n Projects.
    1 Project peut avoir 1 ou n Artworks.

    Donc:
    Profiles---one to many---Projects
    Projects---one to many---Artworks

    Je souhaite lister le nombre de Project par profile et le nombre d'artwork aussi.

    J'ai une classe ProfilesBusiness pour le crud qui contient la méthode GetAll() (Type IList<Profiles>).

    J'ai une classe ProjectsBusiness pour le crud qui contient la méthode GetProjectsByProfile(Profile profile) (type IList<Projects>).

    J'ai une classe ArtworksBusiness pour le crud qui contient la méthode GetArtworksByProject(Project project) (type IList<Artworks>).

    Mon ViewModel se présente comme ceci
    Code : 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
     
    public class ProfileListViewModel
        {
            public IList<ProfileData> listProfiles { get; set; }
            public IList<ProjectData> listProjects { get; set; }
     
            public ProfileListViewModel()
            {
                if (listProfiles == null)
                {
                    ProfileBusiness profileBusiness = new ProfileBusiness();
                    ProjectBusiness projectBusiness = new ProjectBusiness();
                    ArtworkBusiness artworkBusiness = new ArtworkBusiness();
     
                    listProfiles = profileBusiness.GetAll();
     
                    foreach (var profile in listProfiles)
                    {
                        profile.ListProjects = projectBusiness.GetProjectByProfile(profile);
     
                        foreach (var project in profile.ListProjects)
                        {
                            project.ListArtworks = artworkBusiness.GetArtworksByProject(project);
                        }
                    }   
                }
            }
        }
    ListProjects représente la relation one to many dans la classe profiles
    ListArtworks représente la relation one to many dans la classe projects

    Je charge les projects par profile et dans la meme booucle je charge les artworks par project.

    Ma vue va se présenter comme ceci
    Code : 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
     
    <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <th>Img</th>
                <th>Nom</th>
                <th>Pr&eacute;nom</th>
                <th>Pseudonyme</th>
                <th>Date d'inscription</th>
                <th>Pays</th>
                <th>Ville</th>
                <th>Langue</th>
                <th>Projects</th>
                <th>Créations</th>
            </tr>
            <%int count = 0; %>
                <%foreach (var item in Model.listProfiles)
                  {%>
                    <tr>
                      <td>Une imagetd>
                      <td><%:item.LastName %></td>
                      <td><%:item.FirstName %></td>
                      <td><%:item.Alias %></td>
                      <td><%:item.CreatedDate %></td>
                      <td><%:item.Country.Name %></td>
                      <td><%:item.City %></td>
                      <td>Langue</td>
                      <td><%:item.ListProjects.Count %></td>
                      <td><% foreach (var project in item.ListProjects)
                             {
                                count += project.ListArtworks.Count; 
                             } %>
                             <%:Html.Encode(count) %>
                             <% count = 0; %></td>
                    </tr>
                 <% } %>
        </table>
    Je pourrai déclarer la variable count dans le View Model.
    Je pense qu'il y a plus propre comme solution, mais ça fonctionne.

    Si vous avez déjà fais ce type d'affichage, je suis preneur.

    A plus

    Nicolas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Embed form avec relation one to many
    Par dyron dans le forum Symfony
    Réponses: 8
    Dernier message: 24/07/2014, 09h07
  2. lister une table avec zend MVC
    Par oracle12 dans le forum Langage
    Réponses: 1
    Dernier message: 22/05/2012, 09h57
  3. Comment récupérer une liste avec une relation one to many ?
    Par tomlaurent dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/11/2011, 07h16
  4. Problème lors d'un delete avec une relation one-to-many
    Par el_harrathi dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 01/11/2011, 15h01
  5. [hibernate] relation one-to-many avec plusieurs clés
    Par seb_fou dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/03/2006, 14h47

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