Extender gridview pour traitements lourds de listes

Description

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 / Exemple :


<%@ 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)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.