2011-01-24 71 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

看起來像沒有人能回答這個問題。我仍然沒有弄清楚爲什麼會發生這種情況,但是我在上傳完成時在會話中添加了一個標誌,並在刷新頁面上的數據之前檢查該標誌。這樣數據刷新就不會在上傳之前發生。謝謝。