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

看起来像没有人能回答这个问题。我仍然没有弄清楚为什么会发生这种情况,但是我在上传完成时在会话中添加了一个标志,并在刷新页面上的数据之前检查该标志。这样数据刷新就不会在上传之前发生。谢谢。