Attributes.Add si simple mais pourtant si compliqué !!!

ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009 - 27 nov. 2006 à 11:59
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009 - 28 nov. 2006 à 11:30
'>


    protected void Page_Load(object sender,EventArgs e)
    {
        Investissement1TextBox.Attributes.Add("onChange", "alert('This JS function was added on the fly to this HTML Server Control!');");
    }


Ceci c'est du code que j'ai récupéré sur divers site, des sites de référence pour certaines partie. Pourtant lorsque je compile j'ai le message d'erreur suivant :

Erreur    1    Le nom 'Investissement1TextBox' n'existe pas dans le contexte actuel   

J'ai donc modifié le code de la sorte :

    protected void Page_Load(object sender,EventArgs e)
    {
        ((TextBox)Formulaire.FindControl("Investissement1TextBox")).Attributes.Add("onChange", "alert('This JS function was added on the fly to this HTML Server Control!');");
    }


là c cool ça compile mais j'ai le message d'erreur suivant quand la page se charge :

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

J'ai modifié encore le code :

    protected void Page_Activate(object sender,EventArgs e)

    {

       
((TextBox)Formulaire.FindControl("Investissement1TextBox")).Attributes.Add("onChange",
"alert('This JS function was added on the fly to this HTML Server
Control!');");

    }


et

    protected void Page_Activate(object sender,EventArgs e)

    {

        Investissement1TextBox.Attributes.Add("onChange", "alert('This
JS function was added on the fly to this HTML Server Control!');");

    }



Rien n'y fait le problème perdure, cela fait 1h que je cherche, mais je ne comprends pas ... est ce que les codes que j'aurai pu trouver serait de versions précédente et donc peut etre plus compatible avec la nouvelle version du framework .... Je ne sais pas.

Merci pour votre aide

3 réponses

slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
27 nov. 2006 à 18:17
Je suis étonné que le code soit tellement identique entre VB.net et C# sur l'ajout d'attribut.....
En tous cas je fais grossièrement la même chose que toi en VB.Net et pas de problème....çà fonctionne
BtnSuppDoc.Attributes.Add("onClick", "confirmSubmit()")

Le 1er message d'erreur est comme si ton texbox n'existe pas et le deuxième message d'erreur même chose vu qu'il ne retrouve pas le contrôle.
Ceci étant dit la deuxième méthode est inutile si tu n'ajoutes pas ta textbox dynamiquement.

Bref comment construis-tu ta form ?! Déjà tu es dans VS2005 ou bien en simple éditeur de texte
0
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
28 nov. 2006 à 10:52
En fait dans le Page_Load, il apparaitrait que mes éléments ne sont pas
encore loadé et donc je ne peux pas leur ajouter d'atribute ....


J'ai donc déjoué le problème en faisant :

<ew:NumericBox CssClass= "textbox" ID="DuréeTextBox" runat="server" Text='<%# Bind("Durée") %>' PositiveNumber="true" OnInit="MoisTrimestre" ></ew:NumericBox>


Dans ce cas là c cool, j'ai pas besoin de passer de paramètre !
Cependant maintenant j'aimerai avoir à pouvoir des arguments à cette
fonction, exemple :


.ascx


'
OnInit ="ClickOnCheckBox('lineaireCheckBox', 'lineaire')" />


.ascx.cs


    protected void ClickOnCheckBox(String CheckBoxID, String DivID)

    {

       
((CheckBox)Formulaire.FindControl(CheckBoxID)).Attributes.Add("onClick",
"if (this.checked == true) { document.getElementById('" + DivID +
"').style.visibility = 'visible'; document.getElementById('" + DivID +
"').style.height = 'auto' } else {document.getElementById('" + DivID +
"').style.visibility = 'hidden'; document.getElementById('" + DivID +
"').style.height = '0px' }");


    }


Et donc forcément vu que jamais rien ne marche du premier coup ! ça plante NORMAL !!!!

CS1012: Trop de caractères dans le littéral de caractère


Vous auriez pas une petite idée de comment réglé ce pb ?


Merci pour votre aide
0
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
28 nov. 2006 à 11:30
J'aimerai comprendre ......

Normalement dans le Page_Unload, tous les éléments sont chagés ... et bien non car quand je fais :

    protected void Page_Unload(object sender, EventArgs e)
    {
        ((TextBox)Formulaire.FindControl("Investissement1TextBox")).Attributes.Add("onKeyPress", "alert('This JS function was added on the fly to this HTML Server Control!');");

    }

On me dit que ça n'existe pas ... grrr ça m'énerve !

Autre chose encore pourquoi je suis obligé de taper :
((TextBox)Formulaire.FindControl("Investissement1TextBox"))

alors que partout je vois seulement
Investissement1TextBox

Ya une option particulière a sélectionner ?
0
Rejoignez-nous