Retourner plusieurs champs d'une table dans une cellule d'un tableau

MauxDangereux Messages postés 10 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 27 juillet 2012 - 26 juil. 2012 à 11:52
Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 - 3 août 2012 à 11:57
Bonjour,

Je me trouve actuellement avec une table contenant les champs et info suivantes

TableId | CommandeId | Quantité | Objet1Id| Objet1Prix | Objet2Id | Objet2Prix |

1-------------10------------1---------0----------0----------2----------100
2-------------11------------1---------3----------50---------0-----------0
3-------------12------------1---------4----------120--------0-----------0
4-------------12------------1---------9----------54---------0-----------0
5-------------12------------1---------0----------0----------5----------200

A savoir que Objet1 et Objet2 sont deux différent type d'objets, l'un est un livre par exemple, l'autre un DVD.
Ce qui m'interesse ici ce sont les trois dernières lignes, avec toute le meme CommandeId !

J'ai une vue dans laquelle j'affiche un tableau

<table>
    <tr>
        <th>
            CommandeId
        </th>
        <th>
            Objet1
        </th>
        <th>
            Objet2
        </th>
        <th>
            Quantity
        </th>
        <th>
            Objet1Prix
        </th>
        <th>
            Objet2Prix
        </th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Commande.Username)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Objet1.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Objet2.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Quantity)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Objet1Prix)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Objet2Prix)
        </td>
    </tr>


On voit que pour ma Commande 12 j'ai : 2 Objet1 et 1 Objet2
J'aimerai que ma table final ressemble à ceci :


CommandeId | Quantité | Objet1Id| Objet1Prix | Objet2Id | Objet2Prix |

Jean----------1----------Livre1--------120
--------------1----------Livre2--------54
--------------1-----------0------------0----------DVD1----------200


En fait ma question est, par exemple, comment afficher mes deux objet dans la meme cellule pour une meme commande ? J'ai pensé à une boucle FOR mais je ne vois pas comment la construire. Ou peut etre y a t il une toute autre méthode ?
Est ce que un :

Si dans Commande1 il y a plusieurs Objet2 alors afficher tous les Objet2.


Quelque chose du genre est il envisageable ? Bien que je ne vois pas non plus comment le construire.

<td>
    @Html.DisplayFor(modelItem => item.Objet1.Name)
</td>


Merci de votre compréhension, toutes les pistes sont bonnes à prendre...

1 réponse

Tupad Messages postés 239 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 27 août 2012 5
3 août 2012 à 11:57
Oui c'est possible à réaliser.
Le moyen de s'en sortir est de passer par les interfaces et/ou l'héritage.

public interface1
{
string col1 {get;}
string col2 {get;}
string col3 {get;}
string col4 {get;}
}

public object1 : interface1
{
public string col1 {get { return prix;}}
public string col2 {get { return nom;}}
public string col3 {get { return "";}}
public string col4 {get { return "";}}
}

public object2 : interface1
{
public string col1 {get { return taille;}}
public string col2 {get { return poids;}}
public string col3 {get { return "0";}}
public string col4 {get { return "1";}}
}


Tu peux réaliser à peux près la même chose avec une classe abstraite avec des getters abstraits et des classes héritées de celles-ci les implémentants.

Tu peux utiliser aussi un repeater pour construire ton tableau
0
Rejoignez-nous