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 Ajax Discussion :

Mise à jour d'un GridView via une Webmethod


Sujet :

ASP.NET Ajax

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut Mise à jour d'un GridView via une Webmethod
    Bonjour,

    J'ai une fonction JavaScript qui appelle une WebMethod. Celle-ci effectue une recherche dans la BD au moyen d'Entity Model. J'aimerais pouvoir retourner le résultat de cette recherche vers le code client afin de mettre à jour le GridView. J'ai essayé plusieurs méthodes mais en vain.

    Avez-vous des suggestions?

    merci

    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
     
    [System.Web.Services.WebMethod]
        public static List<BottinModel.Entreprise> getCompanies(string criteria, string myGridview)
        {
            BottinModel.BottinEntities db = new BottinModel.BottinEntities();
     
            var result = (from o in db.Entreprises
                         where o.ville == criteria
                         select o).ToList();
     
            //myGridview.DataSource = result;
            //myGridview.DataBind();
            //myGridview.Visible = true;
     
            return result;
     
        }
    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
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="Default2" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
     
    <script type="text/javascript">
     
     function parse(src, dest) {
         var ctrl = document.getElementById(src);
         var dest = document.getElementById(dest)
     PageMethods.getCompanies(ctrl.value, CallSuccess, CallFailed, dest);
    }
     
    function CallSuccess(res, destCtrl) {
        var dest = document.getElementById(destCtrl);
        dest.value = res;
    }
     
    function CallFailed(res, destCtrl) {
        alert(res.get_message());
    }
     
    </script>
     
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
     
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">    </asp:ScriptManager>
     
        <input name="textbox1" id="textbox1" type="text" /> 
        <input name="buttonExecute" onclick="parse('textbox1', 'GridView1')" type="button" value="Execute" /> 
     
        <input id="textbox2" type="text" /><asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
     
     
    </asp:Content>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Essaye d'inclure ta gridview dans un updatepanel avec comme parametre une mise à jour conditionnel et dans ta webmethod ajoute la mise à jour de celui ci.

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Tu ne peux pas directement binder une grid via une fonction js.
    Il faut que tu passes pas un UpdatePanel comme le suggère Gcorbineau ou que tu utilises par exemple un plugin JQuery dédié.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut
    Oui, je comprend ce qu'est un updatepanel mais je ne comprend pas comment je pourrai récupérer ma liste et la mettre dans le GridView à partir du js.

    Pour résumer, ma WebMethod effectue une recherche dans la DB. Je dois donc retourner le résultat au js ou tout autres code côté client. A partir de ce moment, comment puis-je passer l'information pour qu'il soit actualiser dans le gridView?

    J'aurais pu tout faire du coté serveur mais c'est exactement ce que je veux éviter de par la lenteur du traitement.

    Ceci dit, je veux valider les critères de recherche du côté client et faire la recherche côté serveur. Je veux également utiliser un gridview. Si vous avez des suggestions quand à une architecture différente, je suis ouvert à tout.

    merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut
    JCorbineau,

    Comment puis-je accéder à mon UpdatePanel depuis ma WebMethod qui est static? Je n'ai accès à aucune contrôle depuis cette méthode.

    merci

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Comment puis-je accéder à mon UpdatePanel depuis ma WebMethod qui est static? Je n'ai accès à aucune contrôle depuis cette méthode.
    Tu ne pourras pas.

    Quel évènement dans ta page doit déclencher une mise à jour de la grid ? Un clic sur un bouton, des lettres tapées dans un TextBox, etc.
    Inclus ta Grid dans un UpdatePanel (avec UpdateMode="Conditionnal") et définis cet évènement dans un AsynPostBackTrigger.
    Côté code-behind, lorsque cet évènement est levé :
    - appelle ta webméthode
    - sers toi de sa valeur de retour pour rebinder ta grid
    - appelle la méthode Update() de ton UpdatePanel

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Par défaut
    L'usager entre des mot-clés dans un textbox puis click sur un bouton qui appelle un js. La fonction script formate la chaîne de caractère entrée dans le textbox car elle contient des opérateurs logiques. La même fonction js appelle la webmethod et lui passe les critères de recherche.

    Je pense que je vais laisser de côté l'idée d'utiliser une WebMethod et plutôt mettre mes critères de recherche dans un hiddenfield. Je vais ensuite créer un asynchpostback trigger dans mon update panel basé sur le contenu de ce hiddenfield. Noter qu'il n'y a pas beaucoup de gain à utiliser cet updatepanel (lire cet article: http://msdn.microsoft.com/en-us/magazine/cc163499.aspx)

    J'aime bien .NET mais je commence à avoir des doutes sur les performances. Tant de traitement côté serveur!!!!!

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Si tu utilises un "contrôle serveur" type GridView, tu dois t'attendre à devoir le manipuler côté serveur.
    Si tu ne veux pas avoir à gérer ces allers-retours, tu passes par des composants spécifiques comme je te le disais plus haut.

    C'est un choix. Je ne critique ni n'encourage l'un ou l'autre. En effet l'UpdatePanel alourdit rapidement une page s'il est utilisé à mauvais escient. Il a quand même l'avantage de simplifier énormément la mise à jour partielle de page asp.net.

Discussions similaires

  1. Mise à jour de fichier excel via une BDD Access
    Par iliaseyah dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 20/08/2015, 14h23
  2. Mise à jour dynamique de champs via une étape javascript.
    Par losgoomy dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 10/12/2014, 17h54
  3. Réponses: 0
    Dernier message: 27/01/2010, 18h04
  4. Réponses: 3
    Dernier message: 13/01/2010, 13h38
  5. [OL-2003] Tracabilité d'une mise à jour de réunion effectuée via un Iphone ?
    Par hélios44 dans le forum Outlook
    Réponses: 2
    Dernier message: 05/09/2009, 09h57

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