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 Discussion :

GridView plusieurs image dans une même cellules


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet, développeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet, développeur .net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Points : 136
    Points
    136
    Par défaut GridView plusieurs image dans une même cellules
    Bonjour,

    j'essaye de mettre en forme des données dans un gridView et je bloque un peu sur la façon de faire ce que je veux :

    j'ai une table qui représente les états d'un objet à différente date:

    num_objet|etat|date

    je récupère ça dans un dataset ordonné par numéro d'objet. Je voudrais, a partir de là générer un tableau qui contiendrait une ligne par objet (num_objet donc)

    la première colonne contiendrait le numéro et la deuxième colonne, une image pour chaque état avec la date en dessous de l'image (donc autant d'images qu'un objet à eu d'états).

    J'ai déjà réussis a afficher des images dans un gridview, mais ce qui me pose probléme ici, c'est d'en mettre plusieurs dans un seule ligne sachant que dans mon dataset ça correspond à plusieurs lignes.

    Auriez vous des suggestion sur la marche à suivre?




    Actuellement, je génére une ligne par ligne de ma table :

    Code asp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <asp:GridView runat="server" ID="GridViewEtatsAvaloirs" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField DataField="NUM" SortExpression="NUM" Visible="true" HeaderText="Numero" />
                    <asp:TemplateField HeaderText="Etat"  >
                        <ItemTemplate>
                            <asp:Image ID="imageEtat" runat="server" ImageURL='<%# GetImageEtat((String)Eval("etat")) %>' Height="50px" Width="50px"/>
                            <asp:Label ID="labelDate" runat="server" Text='<%# ((DateTime)Eval("DTINTER")).ToString() %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
     
                </Columns>
            </asp:GridView>

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            this.GridViewEtatsAvaloirs.DataSource = recupEtatAval();
            this.DataBind();

  2. #2
    Membre habitué
    Homme Profil pro
    Chef de projet, développeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet, développeur .net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Points : 136
    Points
    136
    Par défaut
    Ne trouvant pas de solution via le binding du gridview, j'ai générer le code html dans la code behind C#.

    ça marche mais je me demande s'il n'y avais pas une solution plus propre.

    requete SQL modifiée pour concaténer les états et dates :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select num, listagg(concat(concat(etat ,'-'),dtinter),'|') within Group (order by dtinter)"etats" from t_da_etat_avaloir group by num;

    le gridview

    Code asp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     <asp:GridView runat="server" ID="GridViewEtatsParAvaloir" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField DataField="NUM" SortExpression="NUM" Visible="true" HeaderText="Numero de l'avaloir" />
                    <asp:TemplateField HeaderText="Etats"  >
                        <ItemTemplate>
                            <%# GetImagesEtatetDates((String)Eval("etats")) %>
                        </ItemTemplate>
                    </asp:TemplateField>
     
                </Columns>
            </asp:GridView>

    la fonction getImageEtatetDate qui génére un sous tableau de tous les états de mon objet :

    Code C# : 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
    37
    38
    39
    40
     
     
    public static string GetImagesEtatetDates(String value)
        {
            String[] etatsDates = value.Replace(" ", "").Split('|');
            String res = "<table><tr>";
            String ligneBas="";
            foreach (String etatDate in etatsDates)
            {
                String[] tabEtaDate = etatDate.Split('-');
                if (tabEtaDate.Length == 2)
                {
                    res += "<td><img Height=\"50px\" Width=\"50px\" src=\"";
                    if (tabEtaDate[0].Contains("v"))
                    {
                        res += "../IMG/cercleblanc.png";
                    }
                    else if (tabEtaDate[0].Contains("d"))
                    {
                        res += "../IMG/cercleMarronclair.png";
                    }
                    else if (tabEtaDate[0].Contains("p"))
                    {
                        res += "../IMG/cercleMarron.png";
                    }
                    else if (tabEtaDate[0].Contains("b"))
                    {
                        res += "../IMG/cercleMarronfonce.png";
                    }
                    else
                    {
                        res += "../IMG/cercleinconnu.png";
                    }
                    res += "\" /></td>";
                    ligneBas += "<td>" + tabEtaDate[1] + "</td>";
                }
            }
            res += "</tr><tr>" + ligneBas + "</tr></table>";
            return res;
        }

Discussions similaires

  1. [Lazarus] Stringgrid et plusieurs lignes dans une même cellule
    Par dav999 dans le forum Lazarus
    Réponses: 2
    Dernier message: 12/11/2010, 22h53
  2. affichage de plusieurs images dans une même figure
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 20/02/2009, 18h45
  3. Plusieurs valeurs dans une même cellule
    Par biche1 dans le forum Excel
    Réponses: 4
    Dernier message: 25/09/2008, 15h56
  4. Réponses: 5
    Dernier message: 04/06/2008, 10h03
  5. Plusieurs résultats dans une même cellule
    Par luboyoyo dans le forum Excel
    Réponses: 2
    Dernier message: 04/06/2007, 08h39

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