Alex009
Messages postés25Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention10 février 2007
-
29 oct. 2004 à 04:28
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 2010
-
30 oct. 2004 à 17:22
Bonjour
j'ai une page xyz.aspx qui contient deux UserControl qui sont Header.ascx et Menu.ascx. J'aimerai au click d'un boutton du Header.ascx faire appel à une methode de Menu.ascx qui mettre à jour un textbox de Menu.ascx. Mais je n arrive pas.
Au niveau de la page xyz.aspx j'ai:
<HEADER:MYHEADER id="MyHeader" runat="server"></HEADER:MYHEADER>
Dans le click de mon boutton au niveau du header j'ai écris ceci:
(C#)
Menu myControl = (Menu)FindControl("myMenu");
Type myControlType = myControl.GetType();
MethodeInfo myMethodeInfo = myControlType.GetMethod("display");
myMethodeInfo.Invoke(myControl ,null);
Quand je le teste, la première ligne me retourne null.
Pour resumer j'aimerai savoir comment initialiser un textbox d'un UserControl à partir du click d'un boutton d'un autre UserControl.
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 29 oct. 2004 à 07:51
Hello,
Je vois trois solutions à ton problème.
- La première avec le FindControl :
//Tu peux aussi essayer avec Parent au lieu de Page.
Menu myControl = (Menu)Page.FindControl("MyMenu");
myControl.display();
La deuxième en déclarant dans le code de ta page un membre public de type Menu:
//J'admet que le nom de la classe de la page est MyPage
public class MyPage: System.Web.UI.Page{
public Menu MyMenu;
//...Le rest de la page
// Et dans le click du bouton
Menu myControl = ((MyPage)Page).MyMenu;
myControl.display();
La troisième en déclarant dans le code de ton Header un membre public de type Menu.
//Dans le PageLoad de la page
MyHeader.MyMenu = MyMenu;
//Dans ton Header
public class Header: System.Web.UI.UserControl{
//Tu peux le mettre private et faire un accesseur
public Menu MyMenu;
// Et dans le click du bouton
MyMenu.display();
Alex009
Messages postés25Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention10 février 2007 29 oct. 2004 à 18:23
Salut SharpMao
Merci pour tes réponse, ça marche avec le premeir exemple, mais je n'arrive pas à la faire fonctionner avec les autresJuste pare curiosité j'aimerai savoir comment les faires fonctionner. J'ai utilisé le deuxième expemple, dont voici une partie du code:
public class Header : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.ImageButton imageButton1;
private void imageButton1_Click(object sender,
System.Web.UI.ImageClickEventArgs e)
{
/*Erreur a ce niveau à la compilation: myPage does not contains a definiton for Menu*/
Menu myControl = ((myPage)Page).MyMenu;
myControl.display();
}
}
}
public class myPage : System.Web.UI.Page
{
public Menu myMenu; //= new Menu();
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
// To do }
}
}
********************************************
Concernat ton troisième exemple tu dis:
//Dans le PageLoad de la page
MyHeader.MyMenu = MyMenu;
tu fais reference au PageLoad de myPage ou du Header?
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 30 oct. 2004 à 17:22
Hello,
pour le deuxième exemple, tu as mis myMenu avec une minuscule et tu l'appel avec une Majuscule.
Pour le troisième, il s'agit du PageLoad de la page.
Amicalement, SharpMao