0

次のようにAJAX Toolkit AsyncFileUploadを使用しています...

        <p>
            <asp:Label runat="server" Text="Choose a webstock file to upload..." ID="uploadResult" />
            <asp:Button ID="btnImport" Text="Import Data to Website &raquo;" OnClick="importData" runat="server" Visible="false" />
        </p>
        <asp:AsyncFileUpload  ID="afuStockImport"  runat="server" 
                OnUploadedComplete="uploadComplete"               
                OnClientUploadError="uploadError" 
                OnClientUploadStarted="StartUpload" 
                OnClientUploadComplete="UploadComplete" 
                Width="400px" 
                UploaderStyle="modern"   
                UploadingBackColor="#b9b9b9" 
                CompleteBackColor="#00FF00"
                ErrorBackColor="#FF0000"
                ThrobberID="myThrobber" 
                ClientIDMode="AutoID"/>
        &nbsp;       
        <asp:Label runat="server" ID="myThrobber" style="display:none;" >  
            <img align="absmiddle" alt="" src="adminimages/uploading.gif" />  
        </asp:Label>  

アップロードの成功時に btnImport コントロールにアクセスして表示しようとしていますが、コード ビハインドの uploadComplete プロシージャからアクセスしても何も起こりません....

        protected void uploadComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
        try
        {
            //upload file to web file system
            System.Threading.Thread.Sleep(5000);
            if (afuStockImport.HasFile)
            {
                string strPath = Server.MapPath("~/admin/stockfiles/") + Path.GetFileName(afuStockImport.PostedFile.FileName);
                afuStockImport.SaveAs(strPath);
                btnImport.Visible = true;
            }
        }
        catch (Exception ulEx)
        {
            //Error message
        }
    }

どんな助けでも大歓迎です。

乾杯、ベン

4

1 に答える 1

0

実際にはそのボタンにアクセスできますが、uploadComplete メソッドが非同期で実行されるため、変更は適用されません。私の意見では、style="display: none;" を使用して btnImport を非表示にし、AsyncFileUpload のクライアント側の OnClientUploadComplete イベントを処理し、ファイルが正常にアップロードされた後にボタンを表示することをお勧めします。

于 2011-06-06T11:09:44.343 に答える