2011-07-12 36 views
5

aspx.netページでAsyncFileUploadコントロールを使用しています。このコントロールは、更新パネル内で実行されています。AjaxToolkitをクリアするAsyncFileUploadコントロール

サーバーにファイルを非同期で正常にアップロードできます。

私の問題は、各ファイルのアップロード後にページ全体をリフレッシュできないため、最後にアップロードされたファイルをクリアする方法を理解する必要があるため、ユーザーがアップロードする新しいファイルを選択すると、ファイルがコントロールに表示されず、コントロールはViewStateでの最後のアップロードを保持しません。

私はこれを試してみましたが、サーバーの非同期ポストバックを行うと、最後にアップロードされたファイルがAsyncFileUploadコントロールに残っています。

サーバー側でクリーンアップする方法はありますか?おそらくビューステートに関連するものは何ですか?

ご協力いただきありがとうございます。

答えて

5

クライアント側では、OnClientUploadCompleteイベントを使用して、最後にアップロードされたファイルエントリをクリアすることができます。ファイルのアップロードが完了し、ポストバックが発生するとAsyncFileUpload1.HasFilefalseを返します。 aspxページで

<asp:AsyncFileUpload ID="AsyncFileUpload1" OnClientUploadComplete="success" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" runat="server" /> 

とJavaScriptタグの内側:

function success() {   
    var fu = document.getElementById("AsyncFileUpload1"); 
    document.getElementById("AsyncFileUpload1").innerHTML = fu.innerHTML; 
} 
+0

おかげWaqasのおかげでperfectl動作します!これは今日私を助けました:-) –

+1

'function success(sender、args){$(sender._element).find( 'input')。 } ' –

0

サーバー側のクリアが私の仕事:

protected void FileUploadComplete(object sender, EventArgs e) 
{ 
    string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName); 
    AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath("Uploads/") + filename); 

    ClearContents(sender as Control); 
} 

private void ClearContents(Control control) 
{ 
    for (var i = 0; i < Session.Keys.Count; i++) 
    { 
     if (Session.Keys[i].Contains(control.ClientID)) 
     { 
     Session.Remove(Session.Keys[i]); 
     break; 
     } 
    } 
} 

参照:フェルによって問題のリンク。 http://www.aspsnippets.com/Articles/Clear-contents-of-AsyncFileUpload-Control-after-upload-and-page-revisit.aspx

2

これが私の仕事:

function ClearFile() { 
    $('input[type="file"]').each(function() { 
     $("#" + this.id).replaceWith($("#" + this.id).clone(true)); 
    }); 

    //For other browsers 
    $('input[type="file"]').each(function() { $("#" + this.id).val(""); }); 
} 
0
<asp:AsyncFileUpload ID="AsyncFileUpload1" OnClientUploadComplete="success" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" runat="server" /> 

function success(sender, args) { $(sender._element).find('input').val(''); } 

を1は、すべての最新ブラウザ、 "Scotty.NET"

関連する問題