Не удается получить доступ к элементу управления .NET из кода AsyncFIleUpload.OnUploadCompleted.

Я использую 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
        }
    }

Любая помощь будет оценена по достоинству.

Привет, Бен


person Ben Drury    schedule 06.06.2011    source источник


Ответы (1)


На самом деле вы можете получить доступ к этой кнопке, но ваши изменения не применяются, так как метод uploadComplete выполняется асинхронно. на мой взгляд, лучше скрыть btnImport с помощью style="display: none;", обработать событие OnClientUploadComplete на стороне клиента AsyncFileUpload и показать кнопку после успешной загрузки файла.

person Yuriy Rozhovetskiy    schedule 06.06.2011
comment
О, да! Очевидно, теперь вы упоминаете об этом. До'х. Таким образом, я мог бы использовать JS, который обновляет сообщение, или потенциально использовать асинхронную панель обновления. Спасибо за вашу помощь. - person Ben Drury; 06.06.2011