Comment déclarer un contrôle personnalisé dans Visual Studio.Net 2003 ?

[Résolu]
Signaler
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour,
J'ai une page "mapage.aspx" éditée sous Dreamweaver. Je veux passer sous Visual Studio.Net 2003. J'ai fait tout à peu près bien sauf pour un contrôle personnalisé pourtant très simple:

en tête de "Mapage.aspx"
<%@ Register TagPrefix="SB" TagName="EnTete" Src="../Cook/EnTeteCook.ascx" %>

puis dans le code HTML :
<sb:entete id="EnTet" runat="server" />

enfin dans le code:
Sub Page_Load(Src As Object, E As EventArgs)
----------------------
If Not IsPostBack Then
EnTet.AddPageNom("Gestion du créneau N° "& NumCren)
'(AddPageNom est une Sub dans EnTeteCook.ascx:
' <script runat="server">
' Sub AddPageNom(Nom As String) etc etc...)

--------etc...-------------

Et apres:
Dans Mapage.aspx.vb ,
j'ai mis comme avant
"EnTet.AddPageNom("Gestion du créneau N° "& NumCren)" dans le page_load et il me souligne "Entet" comme non déclaré.
J'ai un peu regardé l'aide,il faut déclarer le controle dans un un espace de nom , mais je ne sais ni ou ni comment.

Si qqn sait comment faire ?
Merci d'avance
A+
Gilles

P.S.
Quelqu'un sait-il comment on peut publier un code dans la bande étroite qui nous est allouée sans s'embêter à rectifier chaque ligne , le mien est tout rogné, j'ai dû adjoindre un zip pour réparer ça !

3 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
tu travailles en code-behind ?
si oui il faut mettre
Protected WithEvents entet as Entete

dans le code behind du ascx, il faut bien avoir

public class Entete
inherits WebControl

Public Sub AddPageNom(Nom As String)
end sub

end class

et normalement la ca devrait etre bon

Mais je suis pas sur de t'avoir bien suivis :)

tu travailles bien en code-behind de partout ?

Cyril
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
dsl bien sur c'est UserControl et non WebControl je sais pas ou j'ai la tete en ce moment moi :)

pour le protected withevents, le protected, ca veut dire que seul la classe peut s'en servir, et le withevents, ca veut dire que l'on va pouvoir réagir aux evenements de cette objet
a cq fois que tu as un handle objet.Action objet est déclaré en Withevents

sinon on ne pourrait pas 'abonner aux evenements :)

si la reponse te convient n'oublie pas de cliquer sur le bouton reponse accepté :)

@+

Cyril
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

Excuse je n'avais pas été très clair.
Je voulais faire un "avant-après" et j'ai oublié d'écrire "avant" !

je suis bien maintenant en code behind de partout, mais avant, sous dreamweaver, j'avais tout sur "Mapage.aspx" et tout sur "EnTeteCook.ascx", et c'est justement ce que je voulais changer.

En fait, j'avais 2 fautes :
1. Oublié "Public" que tu as judicieusement mis en gras !
2. Mais surtout Omis la déclaration "Protected WithEvents Entet As EnTeteCook" dans "MaPage.aspx.vb" (en fait, je ne sais pas ce que signifie "Protected WithEvents"!

Cependant, le debugger exige "Inherits System.Web.UI.UserControl" et non "WebControl"

En tout cas, maintenant ça marche !
Merci et A+ sur cette même antenne
Gilles