Bonjour à tous !
J'aimerais utiliser un DataSet (ayant plusieurs tables) comme DataSource d'un repeater. Je simplifie, a vrai dire j'utilise un ObjectDataSource qui retourne un DataSet.
J'arrive très bien à accéder à mes données contenues dans la première table, mais comment faire pour changer de table courante ?
Mon code ASPX :
Mon code C# :
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 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Select" TypeName="DataBinding"></asp:ObjectDataSource> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1"> <HeaderTemplate> <table border="1"> <tr> <td>ids</td> <td>Campagne</td> <td>Culture</td> <td>Variété</td> <td>Code</td> <td>Nom</td> <td>Surface</td> <td>Précédent</td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%# DataBinder.Eval(Container.DataItem, "ids") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Campagne") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Culture") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Variété") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Code")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Nom")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Surface")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Précédent")%></td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater>
PS: ceci est un code test... Je sais que c'est un strange d'avoir fait le chargement des données lors du premier l'appel de la propriété...
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 public class DataBinding { private DataSet _ds = null; public DataSet DS { get { try { if (_ds == null) { SqlCommand command = new SqlCommand("ProcedureName", new SqlConnection("ConnectionString")); command.CommandType = CommandType.StoredProcedure; SqlDataAdapter adapter = new SqlDataAdapter(command); _ds = new DataSet(); command.Connection.Open(); adapter.Fill(_ds); command.Connection.Close(); } } catch (Exception e) { _ds = null; } return _ds; } } public DataSet Select() { return DS; } }
Edit:
Ce que j'aimerais avoir c'est quelque chose du genre :
Que le Repeater2 puisse être associé à la deuxième table.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Select" TypeName="DataBinding"></asp:ObjectDataSource> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1"> <HeaderTemplate> <table border="1"> <tr> <td>ids</td> <td>Campagne</td> <td>Culture</td> <td>Variété</td> <td>Code</td> <td>Nom</td> <td>Surface</td> <td>Précédent</td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%# DataBinder.Eval(Container.DataItem, "ids") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Campagne") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Culture") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Variété") %></td> <td><%# DataBinder.Eval(Container.DataItem, "Code")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Nom")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Surface")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Précédent")%></td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater> <asp:Repeater ID="Repeater2" runat="server" DataSourceID="ObjectDataSource1"> <HeaderTemplate> <table border="1"> <tr> <td>Date</td> <td>Surface</td> <td>Opération</td> <td>Commentaire</td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%# DataBinder.Eval(Container.DataItem, "Date")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Surface")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Opération")%></td> <td><%# DataBinder.Eval(Container.DataItem, "Commentaire")%></td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater>
@++
NeoMan
Partager