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

Signaler
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
'>


    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

Messages postés
16
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
27 mars 2007

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
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009

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
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009

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 ?