2011-07-26 25 views
0

私はajaxtoolkit AsyncFileUploadを使用し、アップロードされたファイルのリストを表示し、最後のエラーを表示し、アップロードされたファイルを削除するリピーターitemCommandを処理します。asp.net AsyncFileUpload - アップロードされたファイルのリストを表示

<asp:AsyncFileUpload ID="uploader1" 
    runat="server" 
    OnUploadedComplete="AsyncFileUpload1_UploadComplete" 
    OnClientUploadError="uploadError" 
    OnClientUploadStarted="StartUpload" 
    OnClientUploadComplete="UploadComplete" 
    CompleteBackColor="Lime" 
    UploaderStyle="Modern" 
    ErrorBackColor="Red" 
    UploadingBackColor="#66CCFF" 
    ClientIDMode="AutoID" 
    EnableViewState="true" /> 
<asp:UpdatePanel runat="server"> 
    <ContentTemplate> 
     <asp:Label ID="lblError" runat="server" ForeColor="Red" Visible="false" /> 
     <asp:Repeater ID="rptAttachments" 
       runat="server" 
       OnItemCommand="Uploader_ItemCommand"> 
      <ItemTemplate> 
      <a href='#'><%#Eval("Filename") %></a> 
      <asp:LinkButton ID="lnkDelete" 
       runat="server" Text="Удалить" 
       CommandName="DeleteAttachment" 
       CommandArgument='<%#Eval("FileName") %>' 
       /> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="uploader1" EventName="UploadedComplete" /> 
    </Triggers> 
</asp:UpdatePanel> 







    void AsyncFileUpload1_UploadComplete(object sender, AsyncFileUploadEventArgs e) 
     { 
      if (e.state == AsyncFileUploadState.Success) 
       { 

       if (!Facade.Attachment.UploadAttachment(attachment)) 
        ShowErrorMessage("File already exists"); 
       else 
        BindAttachments(); 
       } 
     } 

    void BindAttachments() 
     { 
      rptAttachments.DataSource = Facade.Attachment.GetAttachments(AttachmentId2); 
      rptAttachments.DataBind(); 
     } 

イベントAsyncFileUpload1_UploadCompleteが発生しますが、何も起こりません。

答えて

2

問題はOnUploadedCompleteです。イベントは非同期であり、ページ内で変更することはできません。私はsuch problem laterを持っていて、あなたが見ることができるように、答えはありません。
私のための回避策を見つけました。サーバーハンドラのクッキーに、必要な情報を持つクッキーを設定し、それをクライアント関数で読み取り、適切な処置を行います。
たとえば、クライアント側でCookieを取得した後、ページを更新するリクエストを送信してみることができます。

+0

私はまったく同じ問題を抱えています。私はここであなたの答えを見つけました。私はセッションを使用したくないですが。 –

関連する問題