ASP.Net : problème de Textbox

Signaler
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004
-
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004
-
Bonjour,
j'ai un problème avec des Textbox qui sont par défaut déclarées en "protected". Si je veux les utiliser dans une fonction, il faut qu'elles soient en public.
Or lorsque je les met en public et que je l'exécute, elles ne le restent que pour deux ou trois exécutions.
quelqu'un aurait-il une idée pour les forcer à rester publiques?
Cordialement,
Suffren

16 réponses

Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

Bonjour

je pense que friend serait deja plus approprié que public mais encore faudrait t'il savoir dans quel context tes textbos ont définis et comment tu veux les utiliser exactement

a+
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

Bonjour,
finalement, il n'y a plus de problème mais j'ignore ce qui s'est passé.
désolée de t'avoir dérangé.
Cordialement,
Suffren
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

Bonjour,
en fait ce qui se passe c'est que dés que je change quelque chose dans la page, il remet tous les textbox en Protected et je dois les remettre en Public à la main pour y avoir accès .Alors çà va s'il n'y en a que 5 ou6 mais s'il y en a plus çà risque d'être fastidieux et long.
Si je mets Friend ne risque-t-il pas de tout remettre en Protected?
Cordialement,
Suffren
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

avec quel ide travailles tu?

c'est curieux car moi j'utilise cette synthaxe la dans webform
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox

Je n'ai pas le moindre problème pour accéder aux propriétés de la classe de la page elle même.
Toutefois, je ne me sais pas exactement pourquoi les contrôles doivent être déclarés de cette manière (je me suis surtout penché sur les webservices jusqu'ici).
Ceci dit si tu dois accéder aux propriétés de tes textbox depuis une autre classe je pense que tu devrais créer des propriétés en public.
IlSandor
www.ilsandor.net
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

Je travaile sous VS.Net et je dois accéder aux textbox à partir d'une autre classe qui les remplit automatiquement avecles données d'Access.
Que veux-tu dire par "créer des propriétés en public"? S'agit-il de "poperty"? Si oui comment çà marche?

Cordialement,
Suffren
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

la syntaxe d'une propriété c ca

    Public Property textbox1Text() As String
        Get
            Return TextBox1.Text
        End Get
        Set(ByVal Value As String)
            TextBox1.Text = Value
        End Set
    End Property


IlSandor
www.ilsandor.net
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

Ok mais je le mets où?
Désolée mais là je ne connais pas.
Cordialement,
Suffren
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

tu peux aussi le faire avec une variable

private m_value as string

    Public Property textbox1Text() As String
        Get
            Return m_value
        End Get
        Set(ByVal Value As String)
            m_value = Value
        End Set
    End Property


ou inclure des traitements des verifs etc...

private m_value as string
private m_int as integer

    Public Property textbox1Text() As String
        Get
            Return m_value
        End Get
        Set(ByVal Value As String)
if Value = "" then
throw new exception("chaine vide")
           else
 m_value = Value
end if
        End Set
    End Property

 Public Property theint() As Integer
        Get
            Return m_int
        End Get
        Set(ByVal Value As String)
try
m_int  = Integer.parse(value)
catch ex as exception
end try
        End Set
    End Property



IlSandor
www.ilsandor.net
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

ca se met dans le coprs de la classe de ta page
ou de la classe qui contient la variable traitée
IlSandor
www.ilsandor.net
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

D'accord dois-je mettre autant de propriétés que de textbox?
Cordialement,
Suffren
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

oui et non

en effet tu peux créer une propriété par textbox ca c'est le plus simple mais tu peux aussi le faire avec deux fonction

public sub WriteTextBox(Id as String, Value as String)
CType(Me.FindControl("test"), TextBox).Text = "test"
End Sub

public function ReadTextBox(Id as string) as string
Return CType(Me.FindControl("test"), TextBox).Text
End Function


IlSandor
www.ilsandor.net
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

je me suius planté dans le code

public sub WriteTextBox(Id as String, Value as String)
CType(Me.FindControl(Id), TextBox).Text = Value
End Sub

public function ReadTextBox(Id as string) as string
Return CType(Me.FindControl(Id), TextBox).Text
End Function

IlSandor
www.ilsandor.net
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

Le problème est que j'utilise une fonction d'une classe pour remplir ce formulaire.

Le formulaire est InfosClient.aspx et il appelle la fonction
FonctFormBoucle(ByVal IDClient As Integer, ByRef nom_page As System.Web.UI.Page) :

'Parcourt des contrôles de la page
For Each Controle In nom_page.Controls(1).Controls
     nomchamp = Controle.ID
     'Si les 4 premiers carac du nom forment Text alors
     If Left(nomchamp, 4) Like "Text" Then
           nom = nomchamp.Remove(0, 4)
           'Recherche dans la base si le champ existe
           For Each objDataCol In objDataTable.Columns
                nom_champ = objDataCol.ColumnName
                If nom_champ Like nom Then
                     'Remplissage du champ de saisie
                      champtexte = nom_page.Controls(1).FindControl("Text" + nom)
                      champtexte.Text = objDataTable.Rows(intRowNumber).Item(nom_champ)
                      Exit For
               End If
           Next
      End If
Next


Le "Me" doit se transfoermer en nom_page.Controls(1) si je mets les fonctions dans la même classe que FonctFormBoucle.
si par contre je le mets dans la classe de mon WebForm comment puiis-je y accéder à partir de la fonction FonctFormBoucle?
Cordialement,
Suffren
Messages postés
39
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 avril 2005

ta fonction tu la mets dans une classe ou dans un module?
IlSandor
www.ilsandor.net
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

La fonction est dans une classe
Cordialement,
Suffren
Messages postés
92
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
9 août 2004

Bonjour,
Même si je mets tes fonctions çà ne change rien car il me met que les contrôles sont inaccessible car "Protected".
En plus, la première fois que j'ai testé les fonctions il acceptait le CType ce qui n'est plus le cas. Qu'en penses-tu?
Cordialement,
Suffren