Accéder à un UserControl dans le Header d'un Repeater

Résolu
wlad952 Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 mars 2009 - 20 mars 2008 à 12:30
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 21 mars 2008 à 18:23
Tout d'abord, bonjour !

Je travail sur un site web en ASP.NET 2.0 C#.

J'ai un usercontrol qui se trouve dans le header d'un repeater.

J'aimerais savoir, comment je récupère mon usercontrol du header pour y charger des valeurs ?

(Sachant que mon usercontrol est une Datalist toute simple)

Merci par avance.

7 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 mars 2008 à 15:32
Voici la réponse, elle est bien sûr à factoriser (c'est un exemple de test la suite du début du post) et tu peux faire une boucle si tu n'es pas sur que le header est à la position 0
de plus il faut faire un test de nullité si le Label1 de repeater est null

Label1 est dans le repeater en header
et
Label2 est dans la page comme button1

 protected void Button1_Click(object sender, EventArgs e)
{
       if ((Repeater1.Controls[0] as RepeaterItem).ItemType == ListItemType.Header)
        {
             Label2.Text = ((Repeater1.Controls[0] as RepeaterItem).FindControl("Label1") as Label).Text;
     }
}

Apres à toi d'adapter avec tes composants.
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 mars 2008 à 19:34
Salut

Voici un exemple de recuperation a adapter pour ton cas

Bon courage, j'ai pas fais de vrai databinding pour l'itemtemplate

=============================================

Dans la page aspx

        
    <HeaderTemplate>
        

    </HeaderTemplate>
   
       
   
   
===================================================
Dans apx.cs

protected void Page_Load(object sender, EventArgs e)
    {

        List<String> t = new List<string>();
        t.Add("toto");
        t.Add("titi");
        t.Add("tata");
        Repeater1.DataSource = t;
        Repeater1.DataBind();

   
    }

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            Label l = e.Item.FindControl("Label1") as Label;
            l.Text = "modifié";
        }
    }
0
wlad952 Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 mars 2009
21 mars 2008 à 09:19
Merci pour le coup de main je vais essayer comme çà.

Je posterais le résultat d'ici ce midi.
0
wlad952 Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 mars 2009
21 mars 2008 à 14:24
Bon j'arrive à accéder à mon usercontrol dans mon header dans l'évènement OnDataBound.

Ne serait-il pas possible d'y accédér dans un évènement "normal" (simple clique d'une ddl) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wlad952 Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 mars 2009
21 mars 2008 à 16:56
En debug, quand je regarde les "controls" de mon repeater, au niveau 0 c'est bien mon header donc

j'ai adapté à mon contexte :

id = ((UserControls_actifs_bdvi_header_loge)(rptLoge.Controls[0] as RepeaterItem).FindControl("ucHeader")).IdProg.ToString();

La variable id vaut "" donc en clair j'ai l'impression que je n'arrive pas à récupérer mon User control...

Une idée ?

Merci d'avance
0
wlad952 Messages postés 30 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 mars 2009
21 mars 2008 à 18:10
Problème résolu merci beaucoup. La solution à mon problème  :

MonUserControl header
header = (MonUserControl )(MonRepeater.Controls[0] as RepeaterItem).FindControl("ucHeader");

Voilà après on peut manipuler à souhait la variable header qui correspond à votre UserControl.

Ps : dans mon exemple, le userControl est "personnalisé" : ce n'est pas un textbox, label etc...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 mars 2008 à 18:23
Si tu veux
id = ((UserControls_actifs_bdvi_header_loge)(rptLoge.Controls[0] as RepeaterItem).FindControl("ucHeader") as MonUserControl ).IdProg.ToString();

Il manquait le cast ;-)

Les user controls c'est un peu comme un control c'est pour accéler mes dev qu j'ai mis un label

That's all, l'essentiel c'est de comprendre le principe ;-)
0
Rejoignez-nous