2013-03-28 9 views
6

Ich habe einen Standard AjaxFileUpload SteuerAjaxFileUpload automatisch laden Datei einmal ausgewählt

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

Und anstatt sie Hochladen drücken zu müssen, ich will nur die Datei automatisch laden, sobald sie die Datei ausgewählt haben. Gibt es eine Möglichkeit, dies zu tun?

+0

Sie zu einer Lösung finden kann, habe ich ein ähnliches Problem hier: http://stackoverflow.com/questions/12372612/twitter-boostrap-fileupload/12471857#12471857. –

Antwort

4

Verweis auf dieses Skript Scripts Sammlung von ToolkitScriptManager Kontrolle hinzufügen oder es nur bei ganz unten auf Seite setzen:

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

Arbeiten gut von der Konsole auf dieser Seite: AjaxFileUpload Demonstration

Auch meiner Meinung nach Es sollte besser sein, ACT-Quellen zu optimieren und eine neue Eigenschaft wie UploadAutomatically zu diesem Steuerelement hinzuzufügen. Lassen Sie mich wissen, wenn Sie diese Option bevorzugen werden und benötigen weitere Informationen darüber, wie solche Mitarbeiter zu

AKTUALISIERT: versuchen, dieses Skript für neue AjaxFileUpload (muss für neue und alte Versionen arbeiten, aber noch nicht getestet)

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

hat super funktioniert. Danke –

+0

Dieser Code funktioniert nicht mehr nach dem Update von April 2013 auf das Ajax Control Toolkit –

+1

@Adam, ich habe Update-Antwort –

3

das funktioniert in der neuesten Steuer Toolkit

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

Schöner Fang. Aber ich befürchte, dass dies die Dateien auf dem Client nicht validieren wird und Drag'n'Drop-Dateien nicht in den Drop-Bereich des Controls fallen. –

0

du hast Recht. ersetzen Sie es einfach mit

$(".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

Das funktioniert fast, aber es löst "Bitte Datei (en) zum Hochladen" -Modal aus, klickt OK auf das Modal und löst den Upload automatisch aus, aber es ist sehr verwirrend für den Benutzer. –

Verwandte Themen