2011-01-24 17 views
0

AsyncFileUploadコントロールに関連する奇妙な問題が発生しています。アップロードの後、ClientUploadCompleteイベントハンドラから_doPostBack関数を呼び出すことによってページを更新しています。最初はうまく動作しますが、次にファイルをアップロードしようとすると、アップロードする前にページが最初にリフレッシュされ、その後アップロードが行われ、ページが再びリフレッシュされます。なぜ更新ページがアップロードの前に一度二回、アップロードの後に​​二回呼び出されているのかわかりません。私はこのバグを持っているこのコードの簡略版を持っています。どんな手がかりも、なぜ起こっているのですか?ファイルのアップロード後にページを更新する際に問題が発生する

マークアップ:

<form id="form1" runat="server"> 
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
</asp:ToolkitScriptManager> 
<div> 
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" OnClientUploadComplete="AsyncFileUpload1_ClientUploadComplete" 
       OnUploadedComplete="AsyncFileUpload1_UploadedComplete" />     
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Button ID="Button1" runat="server" Text="Refresh Data" OnClick="Button1_Click" /> 
     <asp:Label ID="Label1" runat="server" EnableViewState="false"></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</form> 

Javascriptを:

<script type="text/javascript"> 
    function AsyncFileUpload1_ClientUploadComplete() { 
     var btnRefreshData = $get("<%=Button1.ClientID%>").name; 
     __doPostBack(btnRefreshData, ""); 
    } 

</script> 

コードビハインド:

 protected void Button1_Click(object sender, EventArgs e) 
    { 
     Label1.Text = "Upload complete"; 
    } 

    protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
    { 
     System.Threading.Thread.Sleep(3000); 
    } 

答えて

0

誰もこの質問に答えることはできないように見えます。私はまだこれがどうして起こったのか分かりませんでしたが、アップロードが完了したときにセッションにフラグを追加し、ページ上のデータをリフレッシュする前にそのフラグをチェックすることで回避策をとっています。この方法ではアップロード前にデータのリフレッシュは行われません。ありがとう。

関連する問題