如何使用AJAX(AjaxControlToolkit)和C#隐藏/显示控件
本文关键字:隐藏 显示 控件 何使用 AJAX AjaxControlToolkit | 更新日期: 2023-09-27 18:00:44
我知道这听起来一定很基本,但我在这里真的很困惑。我想做的是在流程完成后显示超链接。这个过程就是AsyncFileUpload。在ASPX页面中,我想创建一个,但在初始页面加载时将其隐藏。如果我设置样式="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。
您是想在客户端还是服务器端显示?链接是客户端对象还是服务器端对象?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;
如果您能发布一些您已经尝试过的代码,这样我们就可以更好地了解您的位置,这将更有帮助。
{第一个答案已删除}
[EDIT:当我第一次读到这个问题时,我没有发现你在使用AsyncFileUpload]
在更新面板中使用AsyncFileUpload,通过部分回发访问服务器,因此服务器上的其他控件(超链接)不会受到的影响。这将要求您使用javascript(或最好是jquery)在客户端上进行更改。
您可以在OnClientUploadComplete函数上执行此操作,但必须引用如下超链接:<%=hyperLink。ClientID%>.style.display="块";
另一种更asp.net的方式是使用更新面板。将超链接放入UpdatePanel中,并在上传文件时在UpdatePanel上设置触发器。然后在UploadedComplete事件中更改服务器上的可见性。