Salut, je débute avec les contôles ASP.Net, voilà ce que j'essaye de faire :

J'ai une datasource qui sélection des contacts dans ma DB. Chaque contact est associé à différents tags (relation 0,n - 0,n) via table intermédiaire...

J'arrive à utiliser ma datasource pour construire une super GridView mais voilà, j'aimerais bien utiliser dans une des colones un repeater qui utiliserait une autre datasource avec comme SelectParameter l'id du contact en cours.

Voici où j'en suis :
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
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="Contacts" DataKeyNames="id">
            <Columns>
                <asp:BoundField DataField="prenom" HeaderText="prenom" 
                    SortExpression="prenom" />
                <asp:BoundField DataField="nom" HeaderText="nom" SortExpression="nom" />
                <asp:BoundField DataField="adresse" HeaderText="adresse" 
                    SortExpression="adresse" />
                <asp:BoundField DataField="cp" HeaderText="cp" SortExpression="cp" />
                <asp:BoundField DataField="localite" HeaderText="localite" 
                    SortExpression="localite" />
                <asp:BoundField DataField="pays" HeaderText="pays" SortExpression="pays" />
                <asp:BoundField DataField="email" HeaderText="email" SortExpression="email" />
                <asp:BoundField DataField="telephone" HeaderText="telephone" 
                    SortExpression="telephone" />
                <asp:TemplateField HeaderText="tags" Visible="true">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="Contacts" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ContactConnectionString %>" 
            SelectCommand="SELECT pays.nom AS pays, contacts.id, contacts.prenom, contacts.nom, contacts.adresse, contacts.cp, contacts.localite, contacts.email, contacts.telephone FROM pays RIGHT JOIN contacts ON pays.abreviation = contacts.pays">
        </asp:SqlDataSource>
        <asp:SqlDataSource ID="TagsDatasource" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ContactConnectionString %>" 
            SelectCommand="SELECT tags.tag, tags.id FROM tags INNER JOIN contacts_tags ON tags.id = contacts_tags.tags WHERE contacts_tags.contacts = @id"
            OnSelecting="TagSelection_Selecting">
            <SelectParameters>
                <asp:Parameter Name="id"/>
            </SelectParameters>
        </asp:SqlDataSource>
Dans la dernière colone, j'ai donc pour le moment l'affichage de l'id du contact. Comment remplacer ce label par une liste des tags DU contact en cours ???


J'espère que c'est assez clair pour que quelqu'un ait une explication, si la solution est de complétement faire autrement, c'est possible aussi, comme je l'ai préciser, je débute avec les DataControls et j'essaye peut-être de les utiliser dans un mauvais contexte.

J'ai déjà fait pas mal d'essais pour en revenir à mon point de départ...

Sinon avec <% foreach...%> je crois que je serais capable de le faire mais à mon avis c'est pas bien