Bonjour à tous, je réalise une petite application qui génère des fichiers Excel et j'ai besoin de permettre au client de les télécharger après. Pour cela aucun problème, cela fonctionne très bien.

Le soucis viens du fait que des fois la générations de ces fichiers est parfois longue (une dizaine de seconde). Et je voudrez afficher un Gif de chargement le temps que le serveur génère le fichiers.

Je m'explique :

Lorsque le client click sur générer Excel il lance ce javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function GoExcel(Coderequete)
        {
            window.open('GoExcel.aspx?CodeRequete=' + Coderequete, 'GoExcel', 'toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0,width=' + screen.width + ',height=' + screen.height);
        }
Cela me permet d'ouvrir une page aspx qui contient le code de génération de mon fichier Excel en fonction du 'CodeRequete' passé en paramètre.

Ma page GoExcel.aspx contient le code suivant :
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
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GoExcel.aspx.cs" Inherits="GestionPlanning.Web.GoExcel2" %>
 
<!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>Génération de fichier Excel</title>
</head>
 
<body>
    <form id="form1" runat="server">
        <div>
            <center>
                <h2>Création du fichier Excel veuillez patienter svp !</h2>
                <asp:Image ID="Image1" Height="100" Width="100" runat="server" ImageUrl="~/ajax-loader.gif"/>
            </center>
        </div>
    </form>
</body>
</html>
Juste un petit Texte disant de patienter et un Gif qui est en fait une barre de chargement. Et enfin ds le code behind de ma page GoExcel jai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
protected void Page_Load(object sender, EventArgs e)
        {
            Image1.Load += new EventHandler(Image1_Load);
        }
j'attend que l'image soit load avant de lancer mon code behind puis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void Image1_Load(object sender, EventArgs e)
        {//Generation de mon fichier EXCEL puis telechargement du fichier et fermeture de la page (qui fonctionne bien)
}
Le problème est que mon gif ne s'affiche pas, la page reste blanche le temps de la génération du fichier Excel puis se coupe mais à aucun moment elle n'affiche mon gif ou quoique se soit d'autre. J'ai essayer avec le init ou le prerender de l'image afin d'être sur qu'elle soit "prête" avant de lancer le code behind mais rien n'y fait.

Je ne connait pas trop le fonctionnement et l'odre d'execution d'une page aspnet donc SI quelqu'un pouvez m'éclairer

Merci a tous, Cordialement MoZo