begin process at 2012 02 10 17:15:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

WebForms

 > 

WebControl

 > 

Accès à un userControl depuis Repeater


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Accès à un userControl depuis Repeater

mercredi 31 octobre 2007 à 10:22:12 | Accès à un userControl depuis Repeater

YannVB

Bonjour,

je souhaite accéder à un UserControl contenu dans l'itemTemplate d'un Repeater de ma webform, de manière à alimenter dynamiquement les propriétées du userControl qui sera répété, sans avoir recours à du code <%# DataBinder.eval() %> dans la page ASPX.

J'ai parcouru pas mal de forums et ai donc décidé d'utiliser les évènements ItemDataBound ou ItemCreated de manière à récupérer le control présent dans le repeater mais sans succès, ma référence est toujours Null suite à mon FindControl("") !

Je ne peux donc pas accéder au UserControl qui sera répété via le userControl !

Je cherche depuis plusieurs jours, c'est donc en dernier espoir que je poste ici en espérant que vous pourrez éclairer ma lanterne sur le pourquoi !
La solution posté ici (reproduite dans mon code, voir ci dessous) ne fonctionne pas : http://www.aspfr.com/infomsg_COMMENT-ACCEDER-USERCONTROL-PARTIR-REPEATER_993739.aspx


La page ASPX :

(...)

<%@ Register Src="~/ControlesUtilisateursPortail/UCNews.ascx" TagName="UCNews" TagPrefix="uc1" %>
  
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
               <asp:Repeater ID="rptInformations" runat="server" OnItemDataBound="rptInformations_ItemDataBound" OnItemCreated="rptInformations_ItemCreated">
                    <HeaderTemplate>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <uc1:UCNews ID="ucInformation" runat="server" />
                    </ItemTemplate>
                    <FooterTemplate>
                    </FooterTemplate>
                </asp:Repeater>
           
        </div>
    </div>
</asp:Content>




Code Behind :

       protected void rptInformations_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
           UCNews ucNews = e.Item.FindControl("ucInformation") as UCNews;
             // vaut Null !
        }

        protected void rptInformations_ItemCreated(object sender, RepeaterItemEventArgs e)
        {
            UCNews news =  e.Item.FindControl("ucInformation") as UCNews;
             //vaut null
        }
mercredi 31 octobre 2007 à 12:16:25 | Re : Accès à un userControl depuis Repeater

YannVB

Réponse acceptée !
Trouvé! (après trois jours de recherche...)

Dans le ItemDataBound, il faut faire attention au type de l'item considéré.

Il y a 1 Header, 1 Footer, et N Items (voir alternateItem ou Normal Item selon qu'on est configuré plusieurs styles)...

Or dans le header je n'ai pas mon contrôle ucInformation puisqu'il est dans les headers !


donc le findControl (le premier était dans un item de type Header) me renvoyait forcemment Null...


A la fois si simple et si logique, qu'autant perturbant quand comme moi on débute !
vendredi 18 janvier 2008 à 09:32:29 | Re : Accès à un userControl depuis Repeater

obel

Bonjour,

j'ai un souci avec un uc dans un repeater qui resemble un petit peu a ton problème,

quand je mets un <HeaderTemplate> dans mon repeater j'ai un message d'erreur magnifique :

WebUserControl WebUserC = Arg.Item.FindControl("WebUserControl1") as WebUserControl;           

WebUserC.SetData((DataRowView)Arg.Item.DataItem);

System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

Alors est ce que j'ai la bonne methode pour tranférer les données a mon uc  ??!!??

comment fait tu pour faire ton transfert des données entre ton repeater et ton uc ?? ou vois tu mon erreur ??

Merci d'avance
Olivier

vendredi 18 janvier 2008 à 09:47:49 | Re : Accès à un userControl depuis Repeater

YannVB

As tu vérifié que ton FindControl ne renvoyait pas Null (met un espion en Debug ou vérifie que WebUserC != null)

A mon avis tu rencontres le même problème que moi, la méthode ItemDataBound est appellée plusieurs fois, donc tu n'as pas forcement en premier la partie qui contiendra ton controle WebUserControl1

Au début tu auras le header, puis les footer éventuels, puis les items, et ton webusercontrol sera QUE dans les items. Donc il faut vérifier le type d'argument lié à la méthode renvoyé ItemDataBound avant tout !


Pour moi, le plus simple (et ce que je fais) c'est vérifier que la référence à mon controle est bien différente de Null)




vendredi 18 janvier 2008 à 09:52:41 | Re : Accès à un userControl depuis Repeater

obel

Merci pour ta rapidité de reponse !!!!

mais comment verifier le type ????
j'ai mis mon code en détails  ici http://www.aspfr.com/infomsg_WEBUSERCONTROL-DANS-REPEATER_1062553.aspx

merci d'avance !!

Olivier

vendredi 18 janvier 2008 à 09:56:47 | Re : Accès à un userControl depuis Repeater

YannVB

Tu vérifies e.Item.ItemType Mais je te conseil plutot après ta première ligne de code WebUserControl WebUserC = Arg.Item.FindControl("WebUserControl1") as WebUserControl; de faire un tout simple test que la référence est différente de null ! if (WebUserC != null) { }
vendredi 18 janvier 2008 à 10:00:50 | Re : Accès à un userControl depuis Repeater

obel

Heu !!!!
Je crois que j'ai besoin d'un Café !!!

Un double même !!

Merci beaucoup je suis ravi de voir qu'il y a des mecs sur ce site qui donne des réponse claire rapide et efficace !!!!
vendredi 18 janvier 2008 à 10:07:35 | Re : Accès à un userControl depuis Repeater

YannVB

je t'en prie, on a tous besoin d'un double café le vendredi matin


Cette discussion est classée dans : code, usercontrol, repeater, findcontrol, ucnews


Répondre à ce message

Sujets en rapport avec ce message

[.net] usercontrol et code behind problème [ par jesusonline ] Bonjour j'ai crée un usercontrol que j'ai inseré dans une page aspx, dans cet usercontrole j'ai des fonctions que j'aimerais bien exploité dans le cod [.NET 2.0] Repeater [ par stailer ] Bonjour, après migration de mon appli asp.net 1.1 vers 2.0, il semblerait que j'ai un souci au niveau des repeater. Dans le header, j'ai des lie Repeater et UserControl [ par marhoa ] Je cherche à afficher des données dans un repeater mais je veux en plus pouvoir modifier ce que je vais afficher en fonction de certaines données que ajout d'un usercontrol à partir du code behind [ par gatita_dev ] Bonjourcomme le dit le titre je veux pouvoir ajouter un control utilisateur dans une page aspx à partir du code behindj'ai fait ce code pour affecter Repeater uniquement en code behind ? [ par coulis ] Peut-on remplir un repeater depuis le code Behind sans devoir saisir en dur le nom des champs comme paramètre du databinder.Eval ? avez vous un exemp Probleme sur un exemple de code pour un repeater tout en code Behind [ par coulis ] Bonjour tout le monde, J'ai trouver ce code sur le lien ci-dessous http://www.codeproject.com/aspnet/RepeaterWithControl.asp Mais je n'arrive pas à Pb de UserControl [ par blueangel ] je suis entrain de créer un datagrid en code behind dans un UserControl.dans l'evenement Page_load du user Control j'ai ajouté cette ligne de code  pu Comment accéder à un UserControl à partir d'un Repeater [ par deeloc_015 ] Bonjour à tous,voilà en fait, je souhaiterai savoir comment faire pour accéder aux propriétés de mon UserControl que j'ai placé dans le ItemTemplate d FormView.FindControl() [ par dawinch ] Bonjour,je n'arrive pas à accéder à un controle d'un FormView via la méthode FindControl.par exemple :                 <asp:HiddenField ID="Hf" runa Callback dans dynamic Usercontrol [ par angelflo18 ] Bonjour à tous,Je suis confronté à un probleme dans mon dev à savoir :J'essaye de me former au dev d'un site .NET avec ajax (et callback) et j'ai une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,541 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales