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 :

[Custom control] - Javascript et postback ?


Sujet :

ASP.NET

  1. #1
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut [Custom control] - Javascript et postback ?
    Salut à tous,

    Est-il possible de faire prendre connaissance à un contrôle serveur d'éléments créés via Javascript ?

    Je m'explique, je viens de mettre en place un control ListBox.
    Dans cette même page, j'ai un bouton, qui lorsque je clique dessus, appelle une fonction JavaScript qui ajoute un élément à la listBox. Cela fonctionne parfaitement bien.

    Comment dois-je faire pour que, lors d'un postback, je puisse tenir compte de ces éléments ajoutés via JS ???

    En effet, dans la liste des items, lors d'un postback, je n'ai que ceux créés avant l'envoi et aucun de ceux que j'ai créé via la bouton et la fonction javascript...

  2. #2
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    A mon avis tu dois mettre les élements de ta liste dans ton objet ViewState.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ViewState["ItemsList"] = maListe.Items
    et ensuite recharger cette liste après le postback en récupérant les objets dans le viewState.

    Ludovic,
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  3. #3
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    A quel moment dois-je faire ça ? Je sais le faire via Javascript ?

    Je ne comprends pas bien ce que tu veux dire

    Merci en tout cas de m'aider

  4. #4
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Normalement ta fonction javascript ne doit pas provoquer de postback ...

    Quel est l'évenement qui force le postback ? un bouton ? autre chose ?
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  5. #5
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Il s'agit d'un bouton

  6. #6
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Donc sur le Button.Click tu stockes ce que tu veux conserver dans ta variable ViewState. Ensuite dans le load de ta page tu peux récuperer le contenu de cette variable.

    L'objet ViewState fonctionne comme la variable de Session mais son scope est limité à la Page.
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  7. #7
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Ok, mais le problème, c'est que la gestion de la méthode ButtonClick se fait lorsque le postback a été effectué et que les contrôles ont été rechargés, et à ce moment précis, tous les éléments ajoutés via le javascript ont été "zappés".

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ne fais pas le PostBack automatiquement, mais dans ton javascript.

  9. #9
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Citation Envoyé par Bluedeep
    Ne fais pas le PostBack automatiquement, mais dans ton javascript.
    J'ai bien peur de ne pas te suivre là

    En effet, je ne fait pas de postback automatique.

    J'ai une listBox, un bouton qui me permet d'ajouter un item à la liste et un autre bouton pour le postback.
    Il ne faut pas chercher d'utilité à cette page, c'est juste pour essayer de mettre le mécanisme en place

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu n'initialiserai pas ta listbox en code behind dans le page load par hasard?

  11. #11
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    J'y ajoute un élément, mais j'ai mis cette initialisation dans un petit bloc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!IsPostBack)
    {
     
    }
    Si c'est ce à quoi tu veux faire référence

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Pongten
    J'ai bien peur de ne pas te suivre là

    En effet, je ne fait pas de postback automatique.

    J'ai une listBox, un bouton qui me permet d'ajouter un item à la liste et un autre bouton pour le postback.
    Il ne faut pas chercher d'utilité à cette page, c'est juste pour essayer de mettre le mécanisme en place
    Et ton bouton qui rajoute un item, il est pas en AutoPostBack à true ?

  13. #13
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Voici le code :

    Default.aspx :

    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
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Page sans titre</title>
        <script type="text/javascript">
        var already = false;
     
        function AddItem(control)
        {
            var listControl = document.getElementById(control);
            listControl.options[listControl.options.length] = new Option("Test2", "test2");
        }
     
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
                <asp:Button ID="Button2" runat="server" Text="++" />
            <asp:Button ID="Button1"
                runat="server" Text="Button" OnClick="Button1_Click" />
        </div>
        </form>
    </body>
    </html>
    Default.aspx.cs :
    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
     
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                ListBox1.Items.Add(new ListItem("test", "test"));
                Button2.OnClientClick = "AddItem('" + ListBox1.UniqueID + "');return false;";
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            foreach(ListItem _li in ListBox1.Items)
            {
                Response.Write(_li.Text + "<br/>");
            }
        }
    }
    Comme je fais return false sur le onClick du button2, cela annule le PostBack.

  14. #14
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Ton bouton qui ajoute les elements via javascript ne peux pas faire de postback sinon il n'y a plus aucun intéret à utiliser javascript

    En gros pour ton exemple tu dois avoir une liste et deux boutons

    Le premier ajoute les élements en javascript SANS postback.
    Le deuxième provoque un postback mais dans son .click tu stockes les élements de la liste dans ton Viewstate ensuite dans le load provoqué par le postback tu bouton tu les récupères.
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  15. #15
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Ok, mais comment dois-je faire pour stocker dans le viewstate via JavaScript ?

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Nan mais y a pas besoin de passer par là
    Tu peux très bien récupérer des éléments ajoutés en js.
    Faut trouver le problème dans le code actuel

    Ta listbox est vide et tu ajoutes juste l'item (test, test) si !IsPostBack, c'est ça?

  17. #17
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Oui, c'est ça.

    Puis une fois dans la page, chaque fois que je clique sur button2, une fonction JS ajoute un élément à la liste.

  18. #18
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    En fait, après pas mal de recherches, il s'avère que lorsqu'on ajoute des éléments à un listbox via javascript, cela n'est pas transmis lors du postback.

    Une façon de contourner ce problème consiste à ajouter un champ caché, et à le remplir avec les éléments que l'on veut ajouter en les séparant avec un séparateur défini, puis récupérer ces items lors du postback.

  19. #19
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Un champ caché qui contient des données pour récupérer après un postback ------> ViewState

    Le viewState fait exactement cela
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  20. #20
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Oui, sauf que je ne connais pas par quel moyen inscrire des données dans le Viewstate via Javascript.. Par contre, dans le champ caché, pas de problème...

    Maintenant si tu sais comment accéder au viewstate via javascript, je suis preneur :-)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Custom control et javascript
    Par topolino dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/11/2010, 13h47
  2. Custom control et ficheir Javascript
    Par topolino dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/11/2010, 13h08
  3. Réponses: 1
    Dernier message: 12/05/2009, 09h50
  4. Gestion d'un Hidden avec Custom Control + Javascript
    Par Ishizaki dans le forum ASP.NET
    Réponses: 5
    Dernier message: 07/10/2008, 10h17
  5. [C#] Custom Control et message de confirmation
    Par lancelot69 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/12/2004, 15h04

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