Passage de valeurs dans des repeaters imbriqués

Signaler
Messages postés
8
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
-
Bonjour!

J'ai deux repeaters imbriqués qui sont liés à deux sources de données sqlDataSource distinctes.

Dans le premier repeater, je récupère la liste des rubriques, avec le nombre d'articles dedans et dans le deuxième, je récupère le nombre d'articles dans les sous-rubriques pour la rubrique donnée.

Je voudrais à présent calculer le pourcentage du nombre d'article d'une sous-rubrique dans la rubrique. Pour cela, j'ai besoin du nombre total d'articles dans la rubrique (valeur que je récupère dans le repeater parent).

Comment puis-je dans le page .aspx, lier la valeur que je récupère via le repeater parent :

Text='<%# DataBinder.Eval(Container.DataItem, "NbArticlesRubrique") %>'


dans le repeater enfant ? Un peu comme cela :

Text='<%# 100 * Int32.Parse(DataBinder.Eval(Container.DataItem, "NbArticlesSsRubrique").ToString())/Int32.Parse(DataBinder.Eval(Container.DataItem, "NbArticlesRubrique").ToString()) %>'


sachant que NbArticlesRubrique est une colonne de ma source de données 1 (repeater parent) et NbArticlesSsRubrique de ma source de données 2 (repeater enfant)

Merci de votre aide...

2 réponses

Messages postés
8
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 mars 2010

Personne n'a jamais eu ce problème ? Est-ce que c'est au moins possible ? Sinon, s'il y a une autre solution en passant par le code behind, j'accepte toutes suggestions...
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonjour,

Je ne suis pas sûr de comprendre ta présentation.
Si ton problème est de déterminer en pourcentages le nombre d'items de chaque rubrique par rapport à l'ensemble des items, tu peux par exemple procéder ainsi dans le code (ici en vb), en supposant que tu affiches le résultat dans un label (ici "labelres") posé dans ton premier repeater :

Private y As Integer
    
Protected Sub Repeater2_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
        y = y + 1
    End Sub
    
Protected Sub Repeater1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim n As Integer = Repeater1.Items.Count
        For Each ri As RepeaterItem In Repeater1.Items
            Dim r2 As Repeater = ri.FindControl("Repeater2")
            Dim n2 As Integer = r2.Items.Count
            Dim l As Label = ri.FindControl("Labelres")
            l.Text = Math.Round(n2 / y * 100, 2) & "%"
        Next   
    End Sub


On peut sans doute faire mieux, mais bon...

GGtry