Meilleur auteur de réponses
Utilisation des resources d'un UserControl par un autre UserControl ou par une webForm

Question
-
Bonjour à vous tous,
j'aimerais bien avoir un exemple expliquant l'utilisation des objets d'un UserControl par un autre UserControl ou par une WebForm en Asp.Net Exemple: Comment puisse-je exploiter dans un userControl2, le contenu d'un TextBox1 qui se trouve dans un userControl1 ?
Merci de donner suite à ma question !
Merci d'avoir l’esprit de partager le savoir.
H.B
- Modifié Haroun bouhdid mercredi 19 juin 2013 13:46
Réponses
-
Bonjour
J'ai défini 2 UserControl :
1 Contient un textBox
2. Contient un Label.
Mon but est d'afficher dans le label du deuxième contrôle le texte du premier contrôle:
Dans le premier contrôle j'ai défini une propriété :public String TheString { get { return leTexte.Text; } set { leTexte.Text = value; } }
leTexte c'est le TextBox.
Dans le deuxième contrôle, dans page_load j'ai le code:
protected void Page_Load(object sender, EventArgs e) { UserCtrl1 uc1 =null; if (this.Page.FindControl("UserCtrl11") != null) { uc1 = (UserCtrl1)this.Page.FindControl ("UserCtrl11"); Label1.Text = uc1.TheString ; } }
Dans la page web j'ai les deux contrôles:
<uc1:UserCtrl1 ID="UserCtrl11" runat="server" TheString="Blah Blah" /> <br /> <uc2:UserCtrl2 ID="UserCtrl21" runat="server" />
Cordialement,- Marqué comme réponse Aurel Bera vendredi 28 juin 2013 05:49
Toutes les réponses
-
Bonjour
Normalement, vous devez avoir une propriété publique dans le premier contrôle qui peuvent être accensée par le deuxième contrôle.
Mais, a une première vue, n'est pas une bonne idée d'avoir une telle situation car l'existence de userControl2 demande l'existence de userControl1 et vous ne pouvez pas l'assurer.
Cordialement.
-
Bonjour
Un petit retour SVP?
Merci
Cordialement,
-
Bonjour,
merci bien pour votre réponse.
Pour le retour, je n'ai rien à dire. Je n'ai pas d'exemple spécial, mais ma question est beaucoup plus générale.
elle touche bien précisément l'échange de données entre les UserControls
si vous avez un exemple, ça sera vraiment génial.
Merci bien
H.B
-
Bonjour
J'ai défini 2 UserControl :
1 Contient un textBox
2. Contient un Label.
Mon but est d'afficher dans le label du deuxième contrôle le texte du premier contrôle:
Dans le premier contrôle j'ai défini une propriété :public String TheString { get { return leTexte.Text; } set { leTexte.Text = value; } }
leTexte c'est le TextBox.
Dans le deuxième contrôle, dans page_load j'ai le code:
protected void Page_Load(object sender, EventArgs e) { UserCtrl1 uc1 =null; if (this.Page.FindControl("UserCtrl11") != null) { uc1 = (UserCtrl1)this.Page.FindControl ("UserCtrl11"); Label1.Text = uc1.TheString ; } }
Dans la page web j'ai les deux contrôles:
<uc1:UserCtrl1 ID="UserCtrl11" runat="server" TheString="Blah Blah" /> <br /> <uc2:UserCtrl2 ID="UserCtrl21" runat="server" />
Cordialement,- Marqué comme réponse Aurel Bera vendredi 28 juin 2013 05:49
-
-
Bonjour,
Pour une deuxième fois, je vous merci pour votre exemple, mais j'ai un petit problème qui empêche son fonctionnement.
Voici mon problème:
protected void Page_Load(object sender, EventArgs e)
{
UserControl uc1 = null;
if (this.Page.FindControl("UserCtrl11") != null)
{
uc1 = (UserControl)this.Page.FindControl("UserCtrl11");
Label1.Text = uc1.TheString;
}
}La propriété "TheString" qui est déclarée au niveau de UserCtrl11 n'est pas reconnu ou niveau de UserCtrl12
et voici ce que j'ai comme message d'erreur:
'System.Web.UI.UserControl' ne contient pas une définition pour 'TheString' et aucune méthode d'extension 'TheString' acceptant un premier argument de type 'System.Web.UI.UserControl' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)
Merci d’avance de votre réponse.
bonne journée.
H.B
-
Bonjour
UserControl c'est le type de contrôle général.
Votre type c'est UserCtrl11.
Veuillez faire une transformation à (UserCtrl11) et non à l’UserControl:UserCtrl1 uc1 =null;
if (this.Page.FindControl("UserCtrl11") != null)
{
uc1 = (UserCtrl1)this.Page.FindControl ("UserCtrl11");
Label1.Text = uc1.TheString ;
Cordialement,
- Modifié Aurel Bera mardi 9 juillet 2013 13:18 Modif
-
Merci bien pour votre support bien apprécié.
Dans le cas ou UserCtrl1 soit mon type, c'est mon type (UserCtrl1) qui n'est pas reconnu.
Voici le message d'erreur:
Le type ou le nom d'espace de noms 'UserCtrl1' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
Merci bien et bonne journée.
H.B
-
Avez-vous bien enregistree votre controle dans la page avec <%@Register comme dans l'exemple?
http://msdn.microsoft.com/en-us/library/sbz9etab(v=vs.100).aspx
Le UserCtrl1 c'est bien défini dans le même projet que la page .aspx ?
Cordialement,
- Modifié Aurel Bera mardi 9 juillet 2013 13:28 modif
-
Oui, voici le code de la page Web qui incluse les deux UserControls
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/UserControls/Userctrl11.ascx" TagName="UserCtrl1" TagPrefix="uc1" %>
<%@ Register Src="~/UserControls/UserCtrl12.ascx" TagName="UserCtrl2" TagPrefix="uc2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<uc1:UserCtrl1 ID="UserCtrl11" runat="server" TheString="Blah Blah" />
<br />
<uc2:UserCtrl2 ID="UserCtrl21" runat="server" />
</div>
</form>
</body>
</html>
------------------------------------Voici le code de la déclaration de la variable "TheString" au niveau de UserCtrl11:
protected void Page_Load(object sender, EventArgs e)
{
}
public String TheString
{
get { return leTexte.Text; }
set { leTexte.Text = value; }
}Merci bien.
H.B
-
Les deux userControl sont dans le même namespace?
-
-
Dans le code des deux UserControles vous devez avoir quelque-chose de type
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace nom_espace
{ public partial class UserCtrl2 : System.Web.UI.UserControl {
donc « namespace nom_espace » c'est le même pour les deux contrôles?
-
-
Bonjour
Veuillez regarder cet exemple:
Cordialement,
-