IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] eventHandler ajoutDynamique dans un panel


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut [C#] eventHandler ajoutDynamique dans un panel
    Bonjour,

    j'ai un probleme, je suis alcoolique .. nan je deconne, oki c'etait pas drole j'avoue mais je suis tellement déprimé si vous saviez bouuuhouuu

    En fait voila j'ai une application web en dotnet c-sharp.

    Une page toute bete contenant un panel vide et un bouton.
    Lorsqu'on appuis sur le bouton ca ajoute dynamiquement un textbox dans le panel

    jusque la tout va bien c'est magnifique

    donc évidement j'ai initialisé le textbox avant de l 'ajoute rau panel.
    pendant cet initialisation j'ai ajouté un eventHandler sur la textbox pour que lorsque le texte change cela fasse quelquechose (on s en fout de quoi je veux juste que ca reagisse)

    Le probleme c'est que lorsque je change le texte de la textbox, ca recharge la page (enfin je pense) et ma textbox disparait du panel...j'ai cherché sur le forum mais je n'ai pas trouver de probleme equivalent.

    voici le code behind

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    private void test(object sender, System.EventArgs e)
    		{
    			Label1.Text = "aaa";
    		}
     
    		private void Button1_Click(object sender, System.EventArgs e)
    		{
    			TextBox tmp;
    			tmp = new TextBox();
                                                    tmp.ID = "text1";
    			tmp.AutoPostBack = true;
    			tmp.TextChanged += new EventHandler(this.test);
     
    			Label1.Text += "init";
    		}
    Merci pour votre aide, on sera plus fort que l'alcool !!!!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Tu as du mal chercher, le probleme est récurrent ici. Pas grave, voici la solution : un controle ajouter dynamiquement à l'arborescence des controles doit l'etre a chaque PostBack. Autrement dit, une fois le click sur le bouton fait et la TextBox ajoutée, il faut positionner par exemple une variable dans le ViewState qui indique qu'une TextBox a été ajoutée. Ensuite dans ton Page_Load tu testes cette variable, et tu rajoutes ta textBox s'il le faut (et tu te réabonnes également à son evenement).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut
    bon je vais faire mon lourd :

    quand j'ajoute ma textbox au viewstate j'ai une erreur comme quoi l'objet n'est pas sérialisé.....et come je ne connais rien au viewstate...
    Tu pourrais me mettre deux 3 lignes de codes ?

    Sinon c'est bisard quand je fais une recherche sur le mot "viewstate" dans le forum je n'ai auune reponse....toi aussi ?

    En tout cas merci de ton aide

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Oula, il ne s'agit pas dans la solution que j'ai proposé de mettre la TextBox dans le ViewState, mais une variable qui indique que la textBox a été rajouté ! Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ViewState["TextBoxAdded"] = true;
    Ensuite dans ton Page_Load tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( ViewState["TextBoxAdded"] != null && ((bool)ViewState["TextBoxAdded"]) == true )
    {
        //Tu rajoutes ta textBox
    }
    J'espere que c'est plus clair.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut
    oui je te remercie

    Mais dans ce cas la je perd le texte qui etait dans ma textbox....

  6. #6
    Membre éclairé
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Par défaut
    et bien tu sauvergardes également le texte dans le viewsate.

    Dans le prerender de ta page tu fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( ViewState["TextBoxAdded"] != null && ((bool)ViewState["TextBoxAdded"]) == true ) 
    { 
       ViewState["TextBox.Text"] = TextBox.Text;
    }
    et dans le OnLoad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if( ViewState["TextBoxAdded"] != null && ((bool)ViewState["TextBoxAdded"]) == true ) 
    { 
    if(ViewState["TextBox.Text"]  != null)
    TextBox.Text =    (string)ViewState["TextBox.Text"];
    }

  7. #7
    Membre éclairé
    Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2002
    Messages : 88
    Par défaut
    tiens au passage un truc sympas, utilise plutot les proprités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    property string TextOfTheTextBox
    {
        get
    {
    if(ViewState["TextOfTheTextBox"]!= null)
    return (string)ViewState["TextOfTheTextBox"];
    else
    return "";
    }
    set
    {
    ViewState["TextOfTheTextBox"] = value;
    }
    }
     
    property bool IsTextBoxAdded
    {
        get
    {
    if(ViewState["IsTextBoxAdded"]!= null)
    return (bool)ViewState["IsTextBoxAdded"];
    else
    return "";
    }
    set
    {
    ViewState["IsTextBoxAdded"] = value;
    }
    }
    Dans le onload
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(IsTextBoxAdded)
    {
    //ajoute la texte boxe et initialise là avec TextOfTheTextBox
    }
    Et dans le prerender :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(IsTextBoxAdded)
    {
       TextOfTheTextBox = taTextBox.Text;
    }

    C'est plus propre comme ça je trouve

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Mais enfin non, tu ne perds pas le texte qui etait dans la TextBox, puisque celui-ci est sauvé automatiquement dans le ViewState ! Pas la peine de se retaper à la main le boulot déja fait par Asp.Net ...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut
    Et bien je vous remercie grandement MONSIEURs !!!!

    Ca c'est de la raponse rapide et effication je vous suis tres reconnaissant !!!

    Merci encore

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut
    Citation Envoyé par Sphax
    Mais enfin non, tu ne perds pas le texte qui etait dans la TextBox, puisque celui-ci est sauvé automatiquement dans le ViewState ! Pas la peine de se retaper à la main le boulot déja fait par Asp.Net ...
    Comment ca il est sauvegardé dans le viewstate ? je nepeux pas sauver la textbox dans le viewstate ... ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Par défaut
    oki pour ceux qui seront amenés a lire ce sujet:

    Si dans le postback (pageload) on crée dynamiquement un controle qui porte le meme identificateur que celui deja créé avant, alors ne nouveau reprend toutes les propriété de l'ancien, le text de ma textbox est donc sauvegardé et je le recupere automatiquement

    Encore merci a vous deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessin dans les panels d'un TStatusBar
    Par Amenofis dans le forum Composants VCL
    Réponses: 4
    Dernier message: 31/08/2004, 18h45
  2. [image] dans un panel
    Par phoebe dans le forum Composants
    Réponses: 4
    Dernier message: 13/07/2004, 10h44
  3. [C#] Evenement click dans un Panel
    Par keyser-soze dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/05/2004, 22h21
  4. [Drag & Drop] Mettre une fiche dans un panel
    Par corwin_d_ambre dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/01/2004, 10h46
  5. comment acceder a un component lui meme dans un panel
    Par mimosa7 dans le forum Composants
    Réponses: 2
    Dernier message: 16/11/2003, 23h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo