Как скрыть / показать элемент управления с помощью AJAX (AjaxControlToolkit) и C # - PullRequest
0 голосов
/ 01 июля 2011

Я знаю, это должно звучать очень просто, но я действительно в тупике. Я пытаюсь показать гиперссылку после завершения процесса. И этот процесс - AsyncFileUpload. На странице ASPX я хочу создать, но скрыть его при начальной загрузке страницы. Если я установлю стиль = "display: none;" Кажется, работает, но после загрузки файла, я ничего не сделаю, снова сделает элемент управления видимым. Когда файл загружен, он вызывает функцию с именем FileUploadComplete. Именно здесь, что бы я ни делал, гиперссылка не будет отображаться.

Любая помощь очень ценится:)

Спасибо, Дэйв

Вот код ASPX (с недавно добавленным JavaScript)

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="OptionsPlaceHolder" runat="server">
    <script language="javascript" type="text/javascript">
        function ShowLink() {
            $("#openFile").show();
        }
    </script>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolderBody" runat="server">
    <asp:UpdatePanel ID="updImportFile" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <div class="pageHeader">           
                <asp:Literal runat="server" ID="pageTitle" Text="<%$ Resources:Resources, ImportFile %>" />
            </div>
            <ajaxToolkit:AsyncFileUpload ID="FileUpload1" runat="server" Width="600px" 
UploaderStyle="Traditional" OnUploadedComplete="FileUploadComplete" ThrobberID="throbber" 
               CompleteBackColor="#E9F2FD" OnClientUploadComplete="ShowLink" />
            <asp:Image runat="server" ID="throbber" ImageUrl="images/loading.gif" />                    
            <br />
            <asp:Hyperlink runat="server" ID="openFile" NavigateUrl="~/OpenFile.aspx" Text="Open" 
style="display:none;"/>
        </ContentTemplate>
    </asp:UpdatePanel>        
</asp:Content>

А вот код:

 protected void FileUploadComplete(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            string importName = Server.MapPath(@"Uploads\") + FileUpload1.FileName;
            FileUpload1.SaveAs(importName);

            // Import the JSA
            JSA jsa = new JSA();
            jsa.Import(importName);

            // Show the Hyperlink
            ShowLink();
        }
    }

    private void ShowLink()
    {
        openFile.Attributes["Style"] = string.Empty;
    }

Я не включил код главной страницы. В нем есть ToolkitScriptManager.

Ответы [ 3 ]

1 голос
/ 01 июля 2011

Вы пытаетесь показать на стороне клиента или на стороне сервера?Ссылка на стороне клиента или на стороне сервера?Javascript будет стандартным способом.

Если элемент управления является объектом на стороне клиента:

document.getElementById("hyperlink_name").style.display = "block"; 

Или если это объект на стороне сервера:

document.getElementById("<%= hyperlink_name.ClientID %>").style.display = "block"; 

Я бы порекомендовал получить jQuery и использовать следующее:

$('#hyperlink_name').show(); 

Или вы можете использовать кнопку ссылки ASP.Net и сделать это на стороне сервера:

linkButton.Visible = true; 
0 голосов
/ 01 июля 2011

Было бы более полезно, если бы вы опубликовали часть кода, который вы уже пробовали, чтобы мы могли лучше понять, где вы находитесь.

{первый ответ удален}

[РЕДАКТИРОВАТЬ: я не понял, что вы используете AsyncFileUpload, когда я впервые прочитал вопрос]

Используя AsyncFileUpload внутри панели обновлений, доступ к серверу осуществляется через частичную обратную передачу , в результате другие элементы управления ( гиперссылка ) не могут быть затронуты на сервере . Это потребует от вас использования javascript ( или предпочтительно jquery ) для внесения изменений на клиенте.

0 голосов
/ 01 июля 2011

Вы можете сделать это с помощью функции OnClientUploadComplete, но вы должны ссылаться на гиперссылку следующим образом: <% = hyperLink.ClientID%>. Style.display = 'block';

Еще один способ asp.net - использовать панели обновления. Поместите гиперссылку в UpdatePanel и установите триггер на UpdatePanel, когда файл загружен. затем измените видимость на сервере при событии UploadedComplete.

...