Bonjour,

Je cherche à afficher dynamiquement des données de ma base de données.

Pour cela j’utilise un premier contrôle Repeater.

Mes données proviennent de 2 requêtes différentes. Le résultat de la seconde requête dépend de la première (la requête 2 a besoin d’id généré par la requête 1).

J’utilise donc un second Repeater imbriqué dans le 1 pour afficher le résultat de la requête 2.

Le Repeater.DataSource de la requête 2 est donc différent de celui de la requete1.

J’ai essayé 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
37
38
 
protected void Page_Load(object sender, EventArgs e)
    {
        LoadMessage();
        if (!IsPostBack)
        {
            ParentRepeater.DataSource = LoadMessage();
            ParentRepeater.DataBind();
        }
    }
 
    protected DataTable LoadMessage()
    {
        DataTable dt = new DataTable();
        m = new Message();
        dt = m.GetMessage();
        return dt;
    }
 
    protected void ItemBound(object source, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater childRepeater = (Repeater)e.Item.FindControl("ChildRepeater");
 
            DataTable dt = new DataTable();
            dt = ParentRepeater.DataSource as DataTable;
 
            DataTable dtCategory;
            foreach (DataRow dr in dt.Rows)
            {
                dtCategory = new DataTable();
                dtCategory = m.GetCategoriesForMessage(Convert.ToInt32(dr["Id"]));
                childRepeater.DataSource = dtCategory;
            }
            childRepeater.DataBind();
        }
    }
Mon dtCategory contient les bonnes données, mais au final ce sont les données du premier enregistrement qui apparaissent pour tous les enregistrements.

Comment puis-je faire pour que ce soit la bonne DataTable qui soit la DataSource?

Merci pour votre aide.