2013-04-06 10 views
5

Fino ad ora, ho utilizzato 2 controlli (FileUpload e pulsante aggiuntivo). Dopo aver scelto il file in un controllo fileUpload, l'utente doveva accettare la sua scelta premendo il pulsante Salva.Come fare in modo che FileUpload controlli il caricamento del file subito dopo aver cliccato su 'Sfoglia'?

Ecco il codice del pulsante:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile) 
     { 
      FileUpload1.SaveAs(Server.MapPath("~/file.jpg")); 
      Label1.Text = Server.MapPath("~/file.jpg"); 
      Image1.ImageUrl = "file.jpg"; 
     } 
    } 

Mi chiedo se c'è un modo per evitare di usare quel pulsante, quindi il pulsante del controllo FileUpload avrebbe fatto il lavoro del tasto supplementare.

risposta

4

Il controllo FileUpload esegue il rendering di <input type="file> nel browser. È possibile utilizzare l'evento javascript change per attivare il caricamento.

prima assicurarsi di avere un gestore load evento registrato nella body della pagina:

<body onload="body_onload()"> 

e aggiungere questo codice all'interno del vostro gestore di eventi:

<script type="text/javascript"> 
    function body_onload() 
    { 
     ... 

     $get('<%=FileUpload.ClientID%>').onchange = function() { 
      $get('<%=this.Page.Form.ClientID%>').submit(); 
     }; 
    } 
</script> 

O fare usando jQuery puro, posizionalo nello head della tua pagina (se non hai già jQuery incluso):

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

quindi utilizzare questo codice per associare all'evento (sostituire #fileUpload1 e #form1 con le id dei vostri FileUpload e Form elementi, rispettivamente):

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#fileUpload1").change(function() { 
      $("#form1").submit(); 
     }); 
    }); 
</script> 
Problemi correlati