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 :

Problème UpdatePanel avec appel d'un WebService en CS/Javascript


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Par défaut Problème UpdatePanel avec appel d'un WebService en CS/Javascript
    Bonjour,

    J'ai un petit problème concernant un appel d'un webservice en code-behind qui l'appelle lui-même l'appelle en JS, je m'explique :

    J'ai une page qui possède un UpdatePanel qui contient un UserControl, il n'y a pas de trigger sur cet UpdatePanel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:UpdatePanel runat="server" ChildrenAsTriggers="true" ID="upd" UpdateMode="Conditional">
    [...]
    </asp:UpdatePanel>
    Dans mon UserControl, j'ai un autre UpdatePanel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:UpdatePanel runat="server" ID="UpdatePanelAccountingEntries" UpdateMode="Conditional" ChildrenAsTriggers="true">
    [...]
    </asp:UpdatePanel>
    J'ai évidemment un trigger mais c'est pour une autre action qui marche.

    Ensuite dans le code-behind de mon UserControl, je fais appel à mon webService comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((TextBox)controlCustomerNumber).Attributes["onblur"] = string.Format("getBusinessNameByCustomerNumber('{0}', '{1}', '{2}', '{3}', this);", controlCustomerName.ClientID, LabelErrorCustomerNameValue.ClientID, _table.Rows[cptRows].Cells[0].ClientID, _table.Rows.Count - 1);
    La fonction JS est la suivante :

    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
     
    function getBusinessNameByCustomerNumber(elemCustomerName, elemLabelErrorCustomerNameValue, elemNumberLine, countTableRows, elemCustomerNumber)
    {
        var customerNumberSave = elemCustomerNumber.value.length > 0 ? parseInt(elemCustomerNumber.value) : null;
     
        if (customerNumberSave != null)
        {
            // Appel du webService
            Legal.Rock.View.WebSite.WebServices.VentilationCollection.GetCustomerNameByCustomerCode(customerNumberSave, OnSaveVentilationSucceeded, {customerElem : $get(elemCustomerName),
      error : $get(elemLabelErrorCustomerNameValue),
      line : $get(elemNumberLine),
      number : customerNumberSave,
      rowsNumber: countTableRows });
    }
    }
    Mon WebService est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            [WebMethod]
            public string GetCustomerNameByCustomerCode(int customerCode)
            {
                CustomerVO customer = CustomerDelegate.GetLastCustomerByCustomerNumber(customerCode);
                if (customer != null)
                    return customer.BusinessName;
                return "Inconnu";
            }
    Lorsque je ne mets pas d'UpdatePanel au niveau de ma page, tout marche nickel.Si j'en mets un, l'appel au WebService ne marche pas du tout, quelqu'un saurait-il d'où pourrait venir le problème ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu mets ton UpdatePanel en Conditionnal mais pas de Trigger dessus ??

    Essaye-de le mettre en Always ou de rajouter un Trigger (ou bien d'appeller la méthode UpdatePanel.Update() dans ton code-behind).

    En espérant t'avoir aidé.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Par défaut
    Merci Nicolas pour ta réponse, mais je ne vois pas pourquoi je devrai lancer manuellement l'UpdatePanel de ma page.

    En fait je ne vois pas le lien entre l'appel du webservice et l'UpdatePanel

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Par défaut
    Il ne faut pas que je cherche du côté de "Sys.WebForms.PageRequestManager" plutôt ? Comme le lien ici : http://msdn.microsoft.com/fr-fr/library/bb311028.aspx.

    Le problème est que j'ai dans $addHandler(), j'ai un premier élément dynamique, donc je ne sais pas comment lui passer cet élément car j'ai l'impression que la callback
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(NomDeLaMethodeAAppeler);
    s'execute au chargement de la page...

    Quelqu'un aurait une idée ? Merci

  5. #5
    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
    C'est quoi le problème?
    Le web service n'est pas appelé avec les bonnes valeurs?
    Le web service n'est pas appelé du tout?
    Tu rentres bien dans ta fonction javascript associée au onBlur?
    Tu es bien sûr que customerNumberSave est non null?

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Par défaut
    Si je ne mets pas de UpdatePanel dans ma page mais que j'en mets un dans mon UserControl, mon WebService est bien appelé.
    A contrario, si je mets deux UpdatePanel (un dans ma page et un dans mon UC), alors les valeurs sont bonnes (je les vois bien lorsque je mets un breakpoint dans mon code JS), mais l'appel au WebService ne marche pas, j'ai l'erreur suivante :

    Erreur d'exécution Microsoft JScript: 'Legal' est indéfini.
    , où Legal visiblement est le début de mon NameSpace, ci-dessous l'appel de mon WebService dans le JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Legal.Rock.View.WebSite.WebServices.VentilationCollection.GetCustomerNameByCustomerCode(customerNumberSave,
                                     OnSaveVentilationSucceeded,
                                     OnSaveVentilationFailed,
                                     {   customerElem: $get(elemCustomerName),
                                          error: $get(elemLabelErrorCustomerNameValue),
                                          line: $get(elemNumberLine),
                                          number: customerNumberSave,
                                          rowsNumber: countTableRows
                                      });
    C'est en cela que je ne vois pas le rapport entre un UpdatePanel et l'appel du WebService.

    Merci

  7. #7
    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
    Il est où ton script manager?

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 55
    Par défaut
    En effet, tu as raison, il fallait que je le déplace dans ma page et non que je le mette dans mon UserControl.

    Merci à toi

  9. #9
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Citation Envoyé par krovomi Voir le message
    En effet, tu as raison, il fallait que je le déplace dans ma page et non que je le mette dans mon UserControl.
    Tu aurais indiqué l'erreur dès le début, ça aurait été plus vite

    Sinon un conseil : si tu utilises des UpdatePanels dans plusieurs pages, autant mettre ton ScriptManager dans ta MasterPage.

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

Discussions similaires

  1. Problème UpdatePanel avec TabContainer
    Par kunfuka dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/11/2008, 11h46
  2. Appel d'un webservice hebergé avec IIS
    Par Amokrane dans le forum Framework .NET
    Réponses: 1
    Dernier message: 24/03/2008, 15h40
  3. Problème avec Silverlight et les webservices
    Par Baathor dans le forum Silverlight
    Réponses: 8
    Dernier message: 23/01/2008, 23h20
  4. Problème avec appel de Sub
    Par tribaleur dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/10/2007, 15h39

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