Accueil > > > WEBSERVICES + AJAX = UNE BONNE MÉTHODE POUR BANIR L'AUTOPOSTBACK ET AUGMENTER LA PERFORMANCE DE VOS PAGES
WEBSERVICES + AJAX = UNE BONNE MÉTHODE POUR BANIR L'AUTOPOSTBACK ET AUGMENTER LA PERFORMANCE DE VOS PAGES
Information sur la source
Description
Une expérience que j'aimerais partager avec vous c'est celle de devoir supprimer un AutoPostBack sur une première DropDownList (DDL) qui fesait en sorte de remplir une autre DropDownList selon le choix de la première (il existe un lien 1 -> 0-N : c'est à dire que le faite de sélectionner une option dans le premier DDL généré 0 ou N options sur le 2eme DDL)
Source
- /// <summary>
- /// Description du WebService qui va récupérer les options du 2eme DDL
- /// PS: lors de la création du webService via Visual Studio, ajouté à la main le ///[System.Web.Script.Services.ScriptService]
- /// </summary>
- [WebService(Namespace = "http://tempuri.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [System.Web.Script.Services.ScriptService]
- public class GetDDL2Options : System.Web.Services.WebService {
-
- public GetDDL2Options () {
-
- //Supprimez les marques de commentaire dans la ligne suivante si vous utilisez des composants conçus
- //InitializeComponent();
- }
-
- [WebMethod]
- public string[] GetListOptionsDDL2(int iIDOptionDDL1)
- {
- //PS : le DDL1 contient des objetcs que je nommerais oDDL1Object
- // de même le DDL 2 : oDDL2Object
- oDDL1Object o_DDL1 = new oDDL1Object();
- List<string> items = new List<string>();
- o_DDL1.ID = iIDOptionDDL1;
- //DDL2DB : classe de app_Code, qui interfere avec la Data Base afin de
- // récupérer les objects en base de la DDL2 correspondant à un object
- // de la DDL1 (il existe une clé étrangère)
- ArrayList o_DDL2ObjectList = DDL2DB.GetDDL2ObjectsListForDDL2Object(o_DDL1);
- foreach (oDDL2Object oddl2 in o_DDL2ObjectList)
- {
- items.Add(oddl2.ID.ToString());
- }
-
- return items.ToArray();
- }
-
- }
-
- //Sur la page aspx il faut absolument insérer le ScriptManager de la façon suivante :
-
- <asp:ScriptManager ID="ScriptManager1" runat="server">
- <Services>
- <!-- remplacez par le chemin de votre WebService -->
- <asp:ServiceReference Path="~local/GetDDL2Options.asmx" />
- </Services>
- </asp:ScriptManager>
-
- //à insérer dans la page concerné :
- <script type="text/javascript" language="javascript">
- function GetDDL2ObjectsServiceJS()
- {
- var webServicePath='~local/GetDDL2Options.asmx';
- var webMethod='GetListOptionsDDL2';
- var iId1 = $get('<%=ddl_1.ClientID %>').selectedIndex;
- Sys.Net.WebServiceProxy.invoke(webServicePath,
- webMethod, false,{"iIDOptionDDL1" : iId1}, OnSucceeded,
- OnFailed,"User Context",1000000);
-
- }
-
- function OnSucceeded(result, eventArgs)
- {
- // on ajoute
- AddItem('<%=ddl_2.ClientID%>',result,result);
- }
-
- // le web service echoue.
- function OnFailed(error)
- {
- // affiche l'erreur.
- //lbl2 erreur permet juste de visualiser l'erreur
- var RsltElem = document.getElementById("lbl2Error");
- RsltElem.innerHTML = "WebService Error: " + error.get_message();
- }
-
- //KD 22/04/2009 - Permet d'ajouter un element un une dropdownlist existante
- function AddItem(DDL,Text,Value)
- {
- var lg = 0;
- lg = document.getElementById(DDL).length;
- var i=0;
- var reg = new RegExp("[,;]+", "g");
- var tableauDDL2 = Text.toString().split(reg);
-
- //On remet a zero la taille du select puis on ajoute une option vide
- document.getElementById(DDL).length = 0;
- var opt = document.createElement("option");
- document.getElementById(DDL).options.add(opt);
- opt.text = "";
- opt.value = "";
-
-
-
- for (var j=0; j<tableauDDL2.length; j++) {
- var opt = document.createElement("option");
- document.getElementById(DDL).options.add(opt);
- opt.text = tableauDDL2[j];
- opt.value = tableauDDL2[j];
- }
- }
-
- //Fonction récupérant la valeur de l'option du DDL2 sélectionné
- function RecupIDDDL2() {
- var iId2 = document.getElementById("ddl_2").value;
- //un champ caché permet de récupérer la valeur sélectionné
- // dans le 2eme DDL pour le récupérer lors de la validation
- // du formulaire
- $('hf_idDDL2').value = iId2;
- }
- </script>
-
- //Dernière chose : entourer votre première DDL par un TD et sur son onClick appelé la //fonction JS :
- <td onclick="GetDDL2ObjectsServiceJS();">DDL1 *
- <asp:DropDownList ID="ddl_1" runat="server">
- </asp:DropDownList>
-
- </td>
-
- //Le ddl_2, le lbl2Error et le champ caché :
- //PS : le DropDownList est au faite un select (c'est plus adapté qu'un composant .NET)
- <td>DDL2 *
- <select id="ddl_Sillons" name="ddl_2" runat="server" onclick="RecupIDDDL2()">
- </select>
- <input type="hidden" name="hf_idDDL2" id="hf_idDDL2" runat="server" />
- <asp:Label ID="lbl2Error" runat="server"></asp:Label>
- </td>
/// <summary>
/// Description du WebService qui va récupérer les options du 2eme DDL
/// PS: lors de la création du webService via Visual Studio, ajouté à la main le ///[System.Web.Script.Services.ScriptService]
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class GetDDL2Options : System.Web.Services.WebService {
public GetDDL2Options () {
//Supprimez les marques de commentaire dans la ligne suivante si vous utilisez des composants conçus
//InitializeComponent();
}
[WebMethod]
public string[] GetListOptionsDDL2(int iIDOptionDDL1)
{
//PS : le DDL1 contient des objetcs que je nommerais oDDL1Object
// de même le DDL 2 : oDDL2Object
oDDL1Object o_DDL1 = new oDDL1Object();
List<string> items = new List<string>();
o_DDL1.ID = iIDOptionDDL1;
//DDL2DB : classe de app_Code, qui interfere avec la Data Base afin de
// récupérer les objects en base de la DDL2 correspondant à un object
// de la DDL1 (il existe une clé étrangère)
ArrayList o_DDL2ObjectList = DDL2DB.GetDDL2ObjectsListForDDL2Object(o_DDL1);
foreach (oDDL2Object oddl2 in o_DDL2ObjectList)
{
items.Add(oddl2.ID.ToString());
}
return items.ToArray();
}
}
//Sur la page aspx il faut absolument insérer le ScriptManager de la façon suivante :
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<!-- remplacez par le chemin de votre WebService -->
<asp:ServiceReference Path="~local/GetDDL2Options.asmx" />
</Services>
</asp:ScriptManager>
//à insérer dans la page concerné :
<script type="text/javascript" language="javascript">
function GetDDL2ObjectsServiceJS()
{
var webServicePath='~local/GetDDL2Options.asmx';
var webMethod='GetListOptionsDDL2';
var iId1 = $get('<%=ddl_1.ClientID %>').selectedIndex;
Sys.Net.WebServiceProxy.invoke(webServicePath,
webMethod, false,{"iIDOptionDDL1" : iId1}, OnSucceeded,
OnFailed,"User Context",1000000);
}
function OnSucceeded(result, eventArgs)
{
// on ajoute
AddItem('<%=ddl_2.ClientID%>',result,result);
}
// le web service echoue.
function OnFailed(error)
{
// affiche l'erreur.
//lbl2 erreur permet juste de visualiser l'erreur
var RsltElem = document.getElementById("lbl2Error");
RsltElem.innerHTML = "WebService Error: " + error.get_message();
}
//KD 22/04/2009 - Permet d'ajouter un element un une dropdownlist existante
function AddItem(DDL,Text,Value)
{
var lg = 0;
lg = document.getElementById(DDL).length;
var i=0;
var reg = new RegExp("[,;]+", "g");
var tableauDDL2 = Text.toString().split(reg);
//On remet a zero la taille du select puis on ajoute une option vide
document.getElementById(DDL).length = 0;
var opt = document.createElement("option");
document.getElementById(DDL).options.add(opt);
opt.text = "";
opt.value = "";
for (var j=0; j<tableauDDL2.length; j++) {
var opt = document.createElement("option");
document.getElementById(DDL).options.add(opt);
opt.text = tableauDDL2[j];
opt.value = tableauDDL2[j];
}
}
//Fonction récupérant la valeur de l'option du DDL2 sélectionné
function RecupIDDDL2() {
var iId2 = document.getElementById("ddl_2").value;
//un champ caché permet de récupérer la valeur sélectionné
// dans le 2eme DDL pour le récupérer lors de la validation
// du formulaire
$('hf_idDDL2').value = iId2;
}
</script>
//Dernière chose : entourer votre première DDL par un TD et sur son onClick appelé la //fonction JS :
<td onclick="GetDDL2ObjectsServiceJS();">DDL1 *
<asp:DropDownList ID="ddl_1" runat="server">
</asp:DropDownList>
</td>
//Le ddl_2, le lbl2Error et le champ caché :
//PS : le DropDownList est au faite un select (c'est plus adapté qu'un composant .NET)
<td>DDL2 *
<select id="ddl_Sillons" name="ddl_2" runat="server" onclick="RecupIDDDL2()">
</select>
<input type="hidden" name="hf_idDDL2" id="hf_idDDL2" runat="server" />
<asp:Label ID="lbl2Error" runat="server"></asp:Label>
</td>
Conclusion
Le contenu du code n'est pas une partie de plaisir mais il reste indispensable pour les alliés de la performance.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Paths et WebServices [ par jdaviaud ]
J'ai un phénomène que je n'arrive pas à comprendre.j'ai un WebService qui fait une requete SELECT dans une base Access et qui m'affiche le résultat da
c# et javascript [ par kach23 ]
j'aimerais savoir si il est possible dans une page web d'appeler a partir d'un script c# une fonction javascript.je sais que c'esrt possible de lancer
Utiliser des variables javascript dans aps.net [ par etnac ]
Je m'explique un peu plus que dans le titre.J'ai dans une page une datagrid dans laquelle je gère un évènement qui me supprime la ligne selectionnée.
Performance : ODBC ou OleDb [ par gog ]
Bonjour à tous,J'utilise une bdd Access, quels drivers donnent les meilleurs performances ODBC ou OleDb,Merci d'avance
optimisation bases de données [ par happyfish ]
Je fait une appli ki transfere les données d'une base vers une autre. Je voulais savoir quel est le meilleur moyen pour les insertions/updates de la n
gestion d'une liste de selection en javascript [ par cedre ]
bonjour,est-il possible de supprimer un ou plusieurs éléments sélectionnés dans une liste de sélection exemple de récupération d'un élément sélectionn
Webservices et SSL [ par maevacmoi ]
Hello !J'ai une application cliente qui utilise des webservices. Je voudrais que les échanges entre le client et le serveur soient "sécurisés".J'ai es
Javascript et ASP.NET [ par Alex009 ]
BonjourJ'aimerai effectué une sommation de la valeur de deux champs(TextBox1 et TextBox2) de mon formulaire en ASP.NET, avec une fonction de JavaScrip
Développer un site web en csharp ? [ par boliv ]
Salut à tous,Pour des besoins professionnels, je dois m'autoformer à .Net, asp.net et c# dans le but de construire des sites. Il y a quelques années,
Menu javascript et Dropdownlist [ par oulaich ]
SltMon menu apprait en dessous de mes dropdownlist, y a t'il une solution pour empêcher cela?Merci.Cela m'est indéférent.
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|