2011-12-04 95 views
2

我已经在jquery模式弹出窗口中放置了AsyncFileUpload控件,并且我无法在上传时弹出“AsyncFileUpload1_UploadedComplete”。jquery模式弹出窗口中的asyncfileupload

当它直接放在页面上时它可以工作。 (这是所有在母版的方式)

培训相关的代码是

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc2" %> 

    <script type="text/javascript" language="javascript"> 

    function uploadError(sender, args) { 
     alert(args.get_errorMessage()); 
     document.getElementById('<%=lblStatus.clientid %>').innerText = args.get_fileName(), "<span style='color:red;'>" + args.get_errorMessage() + "</span>"; 
    } 

    function StartUpload(sender, args) { 
     document.getElementById('<%=lblStatus.clientid %>').innerText = 'Uploading Started.'; 
    } 

    function UploadComplete(sender, args) { 
     var filename = args.get_fileName(); 
     var contentType = args.get_contentType(); 
     var text = filename + " has been uploaded successfully. Size: " + args.get_length() + " bytes"; 
     document.getElementById('<%=lblStatus.clientid %>').innerText = text; 
    } 

</script> 

     <cc2:AsyncFileUpload ClientIDMode="AutoID" ID="AsyncFileUpload1" runat="server" OnClientUploadError="uploadError" 
        OnClientUploadStarted="StartUpload" OnClientUploadComplete="UploadComplete" CompleteBackColor="Lime" 
        UploaderStyle="traditional" ErrorBackColor="Red" ThrobberID="Throbber" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" 
        UploadingBackColor="#66CCFF" /> 
       <asp:Label ID="Throbber" runat="server" Style="display: none"> 
          <img src="images/icons/ajax-loader.gif" style="vertical-align:middle" alt="loading" /> 
       </asp:Label>&nbsp; 
       <asp:Label ID="lblStatus" runat="server" Style="font-family: Arial; font-size: small;"></asp:Label> 

像我这样说的时候直接放置在母版的工作,但在与一个div这是要放在不起作用一个模式弹出。 我也顺便说一句设置

<form id="Form1" runat="server" enctype="multipart/form-data" method="post"> 

的背后代码:

Protected Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) 
    If AsyncFileUpload1.HasFile Then 
     txtRef.Text = "1234" 
     If IO.Directory.Exists(Server.MapPath("~\uploads\" & txtRef.Text)) = False Then 
      IO.Directory.CreateDirectory(Server.MapPath("~\uploads\" & txtRef.Text)) 
     End If 
     Dim strPath As String = MapPath("~/Uploads/" & txtRef.Text & "/") & IO.Path.GetFileName(e.FileName) 
     AsyncFileUpload1.SaveAs(strPath) 
     Dim attach As New attachment 
     attach.CallID = txtRef.Text 
     attach.Filename = IO.Path.GetFileName(e.filename) 
     attach.Ext = System.IO.Path.GetExtension(e.filename) 
     attach.UserID = Session("user_id") 
     attach.Create() 
    End If 
End Sub 

形式标签,但仍没有运气,我已经升级ajaxtoolkit到最新版本。

任何想法?

感谢,

回答

2

这是因为jQuery的去除形式控制,当它创建对话框把它放在身体的末端。当它提交表单时,AsyncFileUpload控件不再处于表单中,所以没有任何东西可以回发给服务器来控制这个控件,这就是为什么它没有发回文件。 您需要做的是在jQuery创建对话框后将对话框div放回表单中。

 $('#yourDialogID').parent().appendTo('form');