Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXTENDER GRIDVIEW POUR TRAITEMENTS LOURDS DE LISTES


Information sur la source

Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous : Ajax librairie, gridview, ScriptService, Json, Extender Niveau : Initié Date de création : 06/09/2008 Date de mise à jour : 21/11/2008 10:22:45 Vu / téléchargé: 4 449 / 153

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Petit exemple sur MS Ajax Librairie et les Extenders.

Le problème : Un traitement lourd de validation sur chaque item d'une collection entrainait une latence trop importante pour l'utilisateur qui n'avait aucune idée de l'avancement de la page.

La solution : Traitement ligne par ligne avec un retour visuel coté client sur le statut de la ligne traitée.

En gros, j'utilise un service Web pour effectuer le traitement d'un item ceci via un extender sur le control GridView.
 

Source

  • <%@ Register Assembly="Wapiti.Web.UI.WebControls" Namespace="Wapiti.Web.UI.WebControls" TagPrefix="wpt" %>
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml" >
  • <head runat="server">
  • <title>Demo</title>
  • <script type="text/javascript">
  • onStartAnalyse = function(sender, args)
  • {
  • $get("statut").innerText = "Analyse en cours ...";
  • };
  • onEndAnalyse = function(sender, args)
  • {
  • $get("statut").innerText = "Analyse terminée";
  • };
  • </script>
  • </head>
  • <body>
  • <form id="form1" runat="server">
  • <asp:ScriptManager ID="ScriptManager1" runat="server" />
  • <div>
  • <wpt:GridWorkerExtender ID="GridWorkerExtender1" runat="server"
  • TargetControlID="GridView1"
  • OnClientStartAnalyse="onStartAnalyse"
  • OnClientEndAnalyse="onEndAnalyse"
  • ServicePath="GridWorker.asmx"
  • ServiceMethode="Analyse" WorkingBgColor="Cyan" WorkingColor="Red"
  • />
  • <div id="statut">Hello !!!</div>
  • <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="true"
  • DataSourceID="SqlDataSource1" PageSize="30">
  • <Columns>
  • <asp:BoundField DataField="cln1" HeaderText="Colonne 1" />
  • <asp:BoundField DataField="cln2" HeaderText="Colonne 2" />
  • <asp:BoundField DataField="cln3" HeaderText="Colonne 3" />
  • </Columns>
  • </asp:GridView>
  • <asp:SqlDataSource ID="SqlDataSource1" runat="server"
  • ConnectionString="<%$ ConnectionStrings:CNC_TEST %>"
  • SelectCommand="SELECT * FROM TEST"/>
  • </div>
  • </form>
  • </body>
  • </html>
<%@ Register Assembly="Wapiti.Web.UI.WebControls" Namespace="Wapiti.Web.UI.WebControls" TagPrefix="wpt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Demo</title>
    <script type="text/javascript">
    onStartAnalyse = function(sender, args)
    {
        $get("statut").innerText = "Analyse en cours ...";
    };
    onEndAnalyse = function(sender, args)
    {
        $get("statut").innerText = "Analyse terminée";
    };
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <div>
    <wpt:GridWorkerExtender ID="GridWorkerExtender1" runat="server"
            TargetControlID="GridView1"
            OnClientStartAnalyse="onStartAnalyse"
            OnClientEndAnalyse="onEndAnalyse"
            ServicePath="GridWorker.asmx"
            ServiceMethode="Analyse" WorkingBgColor="Cyan" WorkingColor="Red"
         />
    <div id="statut">Hello !!!</div>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="true"
            DataSourceID="SqlDataSource1" PageSize="30">
        <Columns>
            <asp:BoundField DataField="cln1" HeaderText="Colonne 1" />
            <asp:BoundField DataField="cln2" HeaderText="Colonne 2" />
            <asp:BoundField DataField="cln3" HeaderText="Colonne 3" />
        </Columns>
            </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:CNC_TEST %>" 
        SelectCommand="SELECT * FROM TEST"/>
    </div>
    </form>
</body>
</html>

Conclusion

L'extender ne fonctionne que sur le GridView standard (ne devrait pas fonctionner avec des adapter comme Css Frendly)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

06 septembre 2008 19:19:53 :
P'tites retouches et ajout d'un event de fin de traitement (donc implémentation de Sys.Component)
07 septembre 2008 21:23:49 :
Transformation en Extender
08 septembre 2008 17:27:50 :
Quelques corrections suite à ma précipitation
21 novembre 2008 10:22:07 :
Ajout d'une démo
21 novembre 2008 10:22:45 :
Ajout d'une démo

Commentaires et avis

signaler à un administrateur
Commentaire de spikeyz le 20/11/2008 16:45:59

Bonjour,
Peux-tu mettre la page default.aspx avec l'action sur le bouton de control car je n'arrive pas a utiliser l'extender.

Merci d'avance et bonne continuation.

signaler à un administrateur
Commentaire de Yxion le 21/11/2008 10:23:56

C'est fait... je croyais d'ailleurs avoir laissé la démo

signaler à un administrateur
Commentaire de spikeyz le 21/11/2008 10:41:50

Nikel, Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Problème d'affichage d'un calendar extender dans un gridview [ par teatsx ] Bonjour à tous.J'ai un petit problème d'affichage d'un calendarExtender (Ajax Control Toolkit) dont je n'arrive pas à m'expliquer.J'ai un calendarExte gridview [ par marcbjh ] bonjourjai un gridview avec nom, ville, comment faire pour quand le nom=toto pour mettre la ville en couleur rougeest ce qu il il y a des exemples pou sélectionner une ligne d'un gridview sans commandField [ par teatsx ] BonjourJ'aimerais savoir si il est possible d'avoir les informations d'une ligne d'un gridview sans passer par les boutons du commandField.Actuellemen insérer une colonne d'une gridview [ par foryou ] Bonjour ;j'ai une datagrid qui affiche les nom des étudiants  puor l'autre colonne je cherche à insérer les notes et par la suite les insérer ds la bd GridView [ par sbleuze ] SlutJ'ai un "Control User" dans lequel j'ai une balise panel contenant un gridview. Ce "Control User" est utilisé dans une page aspx classique.Le grid mettre une colonne invisible dans un gridview [ par cuicui6669 ] bonjour, j'ai fait un gridview que je rempli avec un oleDbDataReader par une requete "select * from ...." . Donc pas de souci, tout se remplit correc correspondance entre datakey et index ds un Gridview [ par herve_labenere ] Bonsoir,Je tente de mettre en place un moteur de recherche sur mon application de suivi des marchés : Un champs texte en haut à droite, qui liste ds u insertion d'une ligne dans un gridview [ par Sabine26 ] Bonjour, J'ai un gridview de la forme qui suit: ------------------------------------------------------------------------- <asp:GridView ID="Mapping


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.