2013-03-28 4 views
6

Ho un controllo AjaxFileUpload standard diAjaxFileUpload caricare automaticamente file una volta selezionato

<asp:AjaxFileUpload ID="upManager" CssClass="fileUpload" runat="server" OnUploadComplete="upManager_UploadComplete" /> 

E invece di dover premere Upload, voglio solo il file da caricare automaticamente una volta che hanno selezionato il file. C'è un modo per fare questo?

+0

È possibile fare riferimento a una soluzione, che ho usato per un problema simile qui: http://stackoverflow.com/questions/12372612/twitter-boostrap-fileupload/12471857#12471857. –

risposta

4

Aggiungi riferimento a questo script per Scripts collezione di ToolkitScriptManager controllo o solo metterlo a fondo pagina:

var legacyAddToQueue = Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue; 
Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue = function(element){ 
    legacyAddToQueue.apply(this, [element]); 
    this._doUpload(); 
} 

Opere e da console a questa pagina: AjaxFileUpload Demonstration

Inoltre, a mio parere dovrebbe essere migliore per modificare le fonti ACT e aggiungere nuove proprietà come UploadAutomatically a questo controllo. Fatemi sapere se si preferisce questa opzione e bisogno di ulteriori dettagli su come a tale personale

AGGIORNAMENTO: provare questo script per la nuova AjaxFileUpload (deve lavorare per le versioni nuove e vecchie, ma non ancora testato)

if (Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue) { 
    var legacyAddToQueue = Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue; 
    Sys.Extended.UI.AjaxFileUpload.prototype._addToQueue = function (element) { 
     legacyAddToQueue.apply(this, [element]); 
     this._doUpload(); 
    }; 
}else if(Sys.Extended.UI.AjaxFileUpload.Control){ 
    var legacyaddFileToQueue = Sys.Extended.UI.AjaxFileUpload.Control.prototype.addFileToQueue; 
    Sys.Extended.UI.AjaxFileUpload.Control.prototype.addFileToQueue = function(fileItem){ 
     if(legacyaddFileToQueue.apply(this, [fileItem])){ 
      this._isUploading = true; 
      this.enableControls(this._isUploading); 
      this._processor.startUpload(); 
     } 
    }; 
} 
+0

Ha funzionato alla grande. Grazie –

+0

Questo codice non funziona più dopo l'aggiornamento di aprile 2013 all'Axax Control Toolkit –

+1

@Adam, ho aggiornato la risposta –

3

questo funziona nel nuovissimo kit di strumenti di controllo

<asp:AjaxFileUpload onchange="$('.ajax__fileupload_uploadbutton').trigger('click');" runat="server" /> 
+0

Bella cattura. Ma temo che questo non convalidi i file sul client e non gestirà i file drag'n'drop nell'area di rilascio del controllo. –

0

hai ragione. Basta sostituirlo con

$(".ajax__fileupload").bind("change", function() { setTimeout(function() { $('.ajax__fileupload_uploadbutton').trigger('click'); }, 100); }); 
$(".ajax__fileupload_dropzone").bind("drop", function() { setTimeout(function() { $('.ajax__fileupload_uploadbutton').trigger('click'); }, 100); }); 
+0

Funziona quasi, ma attiva "Seleziona file da caricare". Modale, facendo clic su OK su Modal, attiva automaticamente il caricamento, ma è molto confuso per l'utente. –