2011-12-04 9 views
2

jqueryモーダルポップアップにAsyncFileUploadコントロールを配置しましたが、アップロードするときに「AsyncFileUpload1_UploadedComplete」を起動できません。asyncfileupload in jqueryモーダルポップアップ

ページに直接配置すると機能します。

Releventコードは、私が直接、マスターページ上に置かれたときに仕事をすると言う同様

<%@ 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');