944 messaggi dal 11 febbraio 2013
In una pagina di un sito ho un bottone che permette di fare il download di immagini (inoltre fa una serie di controlli prima che parte effettivamente) e questa procedura dura diversi secondi.

Da quel che so non posso nella stessa richiesta (Response.TransmitFile) fare azioni sulla pagina.

come posso mostrare un semplice messaggio : "downlaod in corso..."

grazie come sempre
166 messaggi dal 09 febbraio 2017
Posta il codice

Emanuel Pirovano
Web Developer
944 messaggi dal 11 febbraio 2013
Non capisco a cosa ti serva cmq niente di speciale:

protected void btnZipImages_Click(object sender, EventArgs e)
    {
        
        try
        {
            string utente = HttpContext.Current.User.Identity.Name;

            List<string> articoliUtente = new List<string>();
            using (MyDataBaseEntities db = new MyDataBaseEntities())
            {
                var divisioniUtente = (from d ...).Distinct();

                articoliUtente = db.ARTICOLI.Where(item => divisioniUtente.Contains(item.divisione)).Select(i => i.codice).ToList<string>();

            }

            List<string> fotoUtente = new List<string>();
            string nome = string.Empty;
            foreach (var i in articoliUtente)
            {
                nome = i + "1Stampa.jpg";
                fotoUtente.Add(nome);
            }

            string fotoPath = Server.MapPath("~/CARTELLAFOTO/");
            string tempfolder = Server.MapPath("~/CARTELLATEMP/");
            string copiaPath = Server.MapPath("~/CARTELLAZIP/Foto.zip");
            string[] listaFoto = Directory.GetFiles(fotoPath, "*.jpg");

            foreach (var f in fotoUtente)
            {
                foreach (var i in listaFoto)
                {
                    string nomeFoto = i.Substring(fotoPath.Length);
                    if (nomeFoto == f)
                    {   
                        File.Copy(Path.Combine(fotoPath, nomeFoto), Path.Combine(tempfolder, nomeFoto.Replace("printquality", "")), true);
                       
                    }
                }
            }

            //creo file ZIP         
            ZipFile.CreateFromDirectory(tempfolder, copiaPath);

            //DOWNLOAD ZIP      
            Response.ContentType = "application/zip";
            Response.AppendHeader("Content-Disposition", "attachment; filename=Foto.zip");
            Response.TransmitFile(Server.MapPath("~/CARTELLAZIP/Foto.zip"));
            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.SuppressContent = true;
            HttpContext.Current.ApplicationInstance.CompleteRequest();
       

            String[] tempFolderItem = Directory.GetFiles(tempfolder, "*.jpg");
            if (tempFolderItem.Length > 0)
            {
                foreach (var s in tempFolderItem)
                {
                    File.Delete(s);
                }
            }

        }
        catch (Exception ex)
        {
           

            lblmsg.Text = "Si è verificato un errore. Contattare il supporto. " ;
        }

       
    }

Modificato da jjchuck il 26 maggio 2017 13.00 -
166 messaggi dal 09 febbraio 2017
Volevo capire a che punto lanciare questo messaggio, non funziona un classico response write ? Oppure un piccolo pop up in javascript ?

Emanuel Pirovano
Web Developer
944 messaggi dal 11 febbraio 2013
sembra di no ? ho esaurito i tentativi
aspetta un popup fatto come ?
Modificato da jjchuck il 26 maggio 2017 14.38 -
166 messaggi dal 09 febbraio 2017
Perchè secondo me lo scrive il messaggio ma non lo visualizzi, che è diverso da non scriverlo nemmeno.
Non so, prova una cosa cosi :

https://www.aspsnippets.com/Articles/Building-Modal-Popup-using-ASPNet-AJAX-ModalPopupExtender-Control.aspx

Perchè almeno il pop up ti rimane in schermo finchè non ci clicchi ok.

Oppure qualcosa di ancora più semplice :



        ClientScript.RegisterStartupScript(Me.GetType(), "myalert", "alert(' Testo del alert ');", True)


Ovviamente va posizionato nel punto corretto del codice, prova un po

Emanuel Pirovano
Web Developer
944 messaggi dal 11 febbraio 2013
Grazie per avermi aiutato
ma non sembra funzionare
a contribuire cè anche UseSubmitBehavior="false" che uso per disabilitare il bottone una volta cliccato
(cosi il file non si corrompe)

<asp:Button ID="btnZipImages" runat="server" Text="JPG" OnClick="btnZipImages_Click" OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />

grazie ancora...

speriamo che riesca a trovare un sistema...
166 messaggi dal 09 febbraio 2017
Figurati, mi piacerebbe farti arrivare ad una soluzione
Perchè disabilitare addirittura il button ? Non basta nasconderlo ?
Button1.Visible = False

Emanuel Pirovano
Web Developer

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.