如何使用 AJAX (AjaxControlToolkit) 和 C# 隐藏/显示控件

发布于 2024-11-18 08:43:49 字数 2318 浏览 2 评论 0原文

我知道这听起来一定很基础,但我真的很困惑。我想做的是在流程完成后显示超链接。而这个过程就是AsyncFileUpload。在 ASPX 页面中,我想创建一个但在初始页面加载时将其隐藏。如果我设置 Style="display: none;"似乎有效,但在文件上传后,我所做的任何事情都不会让控件再次可见。当文件上传时,它会调用一个名为 FileUploadComplete 的函数。在这里,无论我做什么,超链接都不会显示。

非常感谢任何帮助:)

谢谢, dave

这是 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。

I know this must sound really basic but I'm really stumped here. What I'm trying to do is to show a Hyperlink once a process has completed. And this process is the AsyncFileUpload. In the ASPX page, I want to create an but have it hidden on the initial page load. If I set the Style="display: none;" seems to work but after the file upload, nothing I do, will make the control visible again. When the file is uploaded, it calls a function called FileUploadComplete. It's in here that no matter what I do, the Hyperlink won't display.

Any help is greatly appreciated :)

Thank you,
dave

Here is the ASPX Code (with recently added 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>

And here is the code behind:

 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;
    }

I didn't include the master page code. It has the ToolkitScriptManager in it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时光沙漏 2024-11-25 08:43:49

您想在客户端还是服务器端显示?该链接是客户端对象还是服务器端对象? 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; 

Are you trying to show on client-side or server-side? Is the link a client-side, or server-side object? Javascript would be the standard way.

If the control is a client-side object:

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

Or if it is a server-side object:

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

I would recommend getting jQuery and using the following though:

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

Or you can use an ASP.Net Link Button and do it server-side:

linkButton.Visible = true; 
苄①跕圉湢 2024-11-25 08:43:49

如果您发布一些您已经尝试过的代码会更有帮助,以便我们更好地了解您所在的位置。

{第一个答案已删除}

[编辑:当我第一次阅读问题时,我没有发现您正在使用 AsyncFileUpload]

在更新面板中使用 AsyncFileUpload 正在通过部分回发访问服务器,因此服务器上的其他控件(超链接)不会受到影响。这将要求您使用 javascript(或者最好是 jquery)在客户端上进行更改。

It would be more helpful if you would post some of the code you have tried already so that we can get a better idea of where you are.

{first answer deleted}

[EDIT :I didn't catch that you are using AsyncFileUpload when I first read the question]

Using AsyncFileUpload inside an update panel the server is being accessed via a partial postback, as a result other controls (the hyperlink) cannot be affected on the server. This will require that you make use of javascript (or preferably jquery) to make the change on the client.

℡Ms空城旧梦 2024-11-25 08:43:49

您可以在 OnClientUploadComplete 函数上执行此操作,但必须像这样引用超链接: <%= hyperLink.ClientID %>.style.display = 'block';

另一种更asp.net 的方法是使用更新面板。将超链接放入 UpdatePanel 中,并在文件上传时在 UpdatePanel 上设置触发器。然后在 UploadedComplete 事件中更改服务器上的可见性。

You can do it on OnClientUploadComplete function, but you have to reference the hyperlink like this: <%= hyperLink.ClientID %>.style.display = 'block';

Another more asp.net way is to use update panels. Put the hyperlink into an UpdatePanel and set a trigger on the UpdatePanel when the file is uploaded. then change the visibility on the server at UploadedComplete event.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文