Asp.net 使用嵌套在updatepanel中的ascx内部的JS验证按钮单击事件
我在aspx内容页的更新面板中的ascx中有一个按钮。单击按钮时,我希望它运行一个JS函数,使其显示一个面板。这是我的密码Asp.net 使用嵌套在updatepanel中的ascx内部的JS验证按钮单击事件,asp.net,javascript,ajax,user-controls,Asp.net,Javascript,Ajax,User Controls,我在aspx内容页的更新面板中的ascx中有一个按钮。单击按钮时,我希望它运行一个JS函数,使其显示一个面板。这是我的密码 <pre> <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ABC.ascx.cs" Inherits="App.ABC" %> <script type= "text/javascript" language="javascript">
<pre>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ABC.ascx.cs" Inherits="App.ABC" %>
<script type= "text/javascript" language="javascript">
var val1=0;
var val2=0;
function ShowPanel(val2)
{
if(val2 != 0)
{
switch(val2)
{
case 1 :
document.getElementById('<%=pnl1.ClientID%>').style.visibility = 'visible';
break;
}
}
return false;
}
</script>
<asp:LinkButton ID="lbl1" runat="server" OnClick="return ShowPanel(1);">count</asp:LinkButton>
var val1=0;
var-val2=0;
功能显示面板(val2)
{
if(val2!=0)
{
开关(val2)
{
案例1:
document.getElementById(“”).style.visibility='visible';
打破
}
}
返回false;
}
计数
我不知道该怎么做。请帮忙
更新#1-ABC.ascx位于aspx页面XYZ.aspx的updatepanel中
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script type= "text/javascript" language="javascript">
var val1 = 0;
var val2 = 0;
function ShowPanel(val2) {
if (val2 != 0) {
switch (val2) {
case 1:
document.getElementById("<%= this.pnl1.ClientID%>").style.display = "none";
break;
}
}
return false;
}
</script>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel runat="server" ID="pnl1"><div>pepe</div></asp:Panel>
<asp:LinkButton ID="lbl1" runat="server" OnClientClick="return ShowPanel(1);">count</asp:LinkButton>
</div>
</form>
</body>
</html>
var val1=0;
var-val2=0;
功能显示面板(val2){
if(val2!=0){
开关(val2){
案例1:
document.getElementById(“”.style.display=“无”;
打破
}
}
返回false;
}
计数
var val1=0;
var-val2=0;
功能显示面板(val2){
if(val2!=0){
开关(val2){
案例1:
document.getElementById(“”.style.display=“无”;
打破
}
}
返回false;
}
佩佩
计数
在您的示例中,您使用的是LinkButton.OnClick,这是一个服务器端事件,因此它不会触发客户端JavaScript。如果将OnClick更改为OnClientClick,则会导致ASP.NET为LinkButton(可能会在锚标记上呈现为OnClick=“return ShowPanel(1);”属性)弹出客户端单击处理程序
另外,我注意到在ShowPanel()函数中,使用了pnl1.ClientID。我无法从您的代码片段中判断该面板是在主机页(ASPX)还是在用户控件(ASCX)中,但如果它不在用户控件中,则需要建立某种类型的对它的引用(即DirectCast(Me.page,MyHostPageWithPanel).pnl1)。或者,您可能决定它实际上不需要是服务器端控件,然后您可以使用易于通过JavaScript获取的id硬编码一个div。使用此
ScriptManager.RegisterOnSubmitStatement(this,this.GetType(),“”,,“showwait();”;
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),“”,“stopwait();”,true) 我试过了,但是当我动态加载用户控件时,它抛出了一个错误。ABC.ascx(51):错误CS1041:应为标识符;'return'是一个关键字,我在这里输入了完整的示例更新的代码:感谢您的帮助,我尝试了您的代码,它抛出了我,“Microsoft JScript运行时错误:预期对象”单击count linkbutton-lbl1.haaaaaaa,'Visible=“false”',您将此属性放在asp:Panel.jeje中,然后在HTML代码中不生成。始终关注HTML生成,这正是我试图实现的目标。首先隐藏面板,然后单击计数显示面板。Jordan,我改为onclientclick。面板位于ABC.ascx中。ABC.ascx由XYZ.aspx中的updpnl1动态渲染。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script type= "text/javascript" language="javascript">
var val1 = 0;
var val2 = 0;
function ShowPanel(val2) {
if (val2 != 0) {
switch (val2) {
case 1:
document.getElementById("<%= this.pnl1.ClientID%>").style.display = "none";
break;
}
}
return false;
}
</script>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel runat="server" ID="pnl1"><div>pepe</div></asp:Panel>
<asp:LinkButton ID="lbl1" runat="server" OnClientClick="return ShowPanel(1);">count</asp:LinkButton>
</div>
</form>
</body>
</html>