Updatepanel 后端返回后,在 Updatepanel 内控件的前端 js 失效问题
实际情况:点击下箭头弹出列表,点击列表上的隐藏按钮隐藏列表。
背景:模块没有使用Js或者Jquery的Ajax功能,而是使用Asp.Net的Ajax控件——UpdatePanel + ScriptManager 的方式
问题:按钮均使用.Net的单击事件,页面加载时功能正常,当使用了如Ask后端事件返回后,前端的 Hide 功能失效
截图如下:


代码如下:
$(document).ready(function () {
RegisterJs();
});
function RegisterJs() {
$(".NewestArea").hide();
//显示Note区域
$(".ShowNoteListArea").click(function () {
$(".NewestArea").hide("slow");
$(".NoteListArea").slideDown("slow");
});
//隐藏Note区域
$(".HideNoteListArea").click(function () {
$(".NewestArea").show("slow");
$(".NoteListArea").slideUp("slow");
return false;
});
}
<asp:UpdatePanel ID="UpdatePanelNoticeControl" runat="server">
<ContentTemplate> <!-- NoticeControl控件 -->
<div class="NoticeControl"> <!-- 最新Note区域 -->
<div class="NewestArea"> <!-- 点击显示Note区域 -->
<span class="ShowNoteListArea glyphicon glyphicon-chevron-down"></span> <!-- 最新Note标签 -->
<asp:Label ID="NewestShow" runat="server"></asp:Label> </div> <!-- NoteList区域 -->
<div class="NoteListArea">
<ul>
<li>
<ul>
<asp:Repeater ID="NoteList" runat="server">
<ItemTemplate>
<li>
<%#Eval("NoteContent")%>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</li>
<li>
<asp:TextBox ID="TxtNoteContentValue" runat="server" TextMode="MultiLine" Width="500px" Height="50px"></asp:TextBox>
</li>
<li>
<!--<input class="HideNoteListArea ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only ui-button-text" type="button" value="Hide" />-->
<asp:LinkButton ID="HideNoteListArea" CssClass="HideNoteListArea ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only ui-button-text" runat="server">
<span class="glyphicon glyphicon-chevron-up" style="margin-right: -8px;"></span>
<span class="ButtonText">Hide</span>
</asp:LinkButton>
<asp:LinkButton ID="AskGo" CssClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only ui-button-text" OnClick="AskGo_Click" runat="server">
<span class="glyphicon glyphicon-question-sign" style="margin-right: -8px;"></span>
<span class="ButtonText">Ask</span>
</asp:LinkButton>
<asp:LinkButton ID="AnswerGo" CssClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" OnClick="AnswerGo_Click" runat="server">
<span class="glyphicon glyphicon-info-sign" style="margin-right: -8px;"></span>
<span class="ButtonText">Answer</span>
</asp:LinkButton>
<asp:LinkButton ID="CompleteGo" CssClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" OnClick="CompleteGo_Click" runat="server">
<span class="glyphicon glyphicon-ok-circle" style="margin-right: -8px;"></span>
<span class="ButtonText">Complete</span>
</asp:LinkButton>
<asp:Label ID="ResultShow" runat="server"></asp:Label>
</li>
</ul>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="AskGo" />
<asp:AsyncPostBackTrigger ControlID="AnswerGo" />
<asp:AsyncPostBackTrigger ControlID="CompleteGo" />
</Triggers>
</asp:UpdatePanel>
后端事件省略。
——————————————————————————————————————————————————————
问题解决方案一:
该方法网络上均有提及,然而并没有解决我的问题(求圈子朋友帮忙解答),个人表示对原理还是半知不解,继续研究中。方法如下:
在每一个可能引起对前端Js影响的后端事件结束位置使用下面代码注册Js:
ScriptManager.RegisterClientScriptBlock(UpdatePanelNoticeControl, this.GetType(), "RegisterJs", "RegisterJs();", true);
——————————————————————————————————————————————————————
问题解决方案二:
百度另寻来方法:
因为Updatapanel没有postback,你的js不会重新加载。所以失效。更改你的页面代码如下就可以了:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
// re-bind your jquery events here
$(document).ready(function () {
RegisterJs();
});
});
$(document).ready(function () {
RegisterJs();
});
function RegisterJs() {
$(".NewestArea").hide();
//显示Note区域
$(".ShowNoteListArea").click(function () {
$(".NewestArea").hide("slow");
$(".NoteListArea").slideDown("slow");
});
//隐藏Note区域
$(".HideNoteListArea").click(function () {
$(".NewestArea").show("slow");
$(".NoteListArea").slideUp("slow");
return false;
});
}
</script>
果然,问题解决了!
但是到此时,问题的第一个解决方案没有行通,不免心不安,所以挂单求解答!圈子的大牛们,帮帮忙!我也继续到百度寻求答案!
Updatepanel 后端返回后,在 Updatepanel 内控件的前端 js 失效问题的更多相关文章
- WebForm服务器验证控件与前端js自定义验证共同使用
问题: 前端aspx页面中需要在button中添加OnClientClick事件后,这个OnClientClick所执行的自定义的客户端js验证:这个时候,所有的服务器验证控件都会失效! ...
- WinForm容器内控件批量效验是否同意为空?设置是否仅仅读?设置是否可用等方法分享
WinForm容器内控件批量效验是否同意为空?设置是否仅仅读?设置是否可用等方法分享 在WinForm程序中,我们有时须要对某容器内的全部控件做批量操作.如批量推断是否同意为空?批量设置为仅仅读.批量 ...
- WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享
WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我们有时需要对某容器内的所有控件做批量操作.如批量判断是否允许为空?批量设置为只读.批量设置 ...
- Duilib 鼠标在某控件例如按钮上悬停后,对目标控件操作
其实对WM_MOUSEHOVER消息的处理,因为WindowImplBase基类中对此消息未处理,所以在自己的窗口类中实现: .h文件中加入 LRESULT OnMouseHover( UINT uM ...
- Repeater事件OnItemCommand取得行内控件
记录一下,主要是这句:TextBox txtNum = e.Item.FindControl("txtNum") as TextBox; Repeater真是太强了,太灵活.除了R ...
- TGraphicControl(自绘就2步,直接自绘自己,不需要调用VCL框架提供的函数重绘所有子控件,也不需要自己来提供PaintWindow函数让管理框架来调用)与TControl关键属性方法速记(Repaint要求父控件执行详细代码来重绘自己,还是直接要求Invalidate无效后Update刷新父控件,就看透明不透明这个属性,因为计算显示的区域有所不同)
TGraphicControl = class(TControl) private FCanvas: TCanvas; procedure WMPaint(var Message: TWMPaint) ...
- SELECT控件操作的JS代码示例
SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...
- Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用
Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...
- 整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用
整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用 最近又没时间了,等用时间了,再加入更多的, 源码下载: http://download.csdn.net/detail/liang ...
随机推荐
- OC协议、代理的简单使用
在不同类之间传递数据,我所学到的有三种,1.代理,2.block,3.通知.在这里,我们先来讲一下代理的使用,后面我会继续讲到block和通知.代理通常和协议是一起使用的,协议通常写在代理类里面,被代 ...
- window、view相关
View.Window以及Activity主要是用于显示并与用户交互window view activity surfaceView 三者间的关系: 在Activity中要设置View时,通常用的方法 ...
- ubuntu自带截图工具--方便好用(转)
一般用到的截图类型有三种:全屏.当前活动窗口.自定义区域,其中自定义区域截图是最灵活也是我们用的最多的方式.在ubuntu下可以通过其自带的截图工具轻松实现这三种功能. ubuntu自带的截图工具为s ...
- django 图书管理系统
一.图书管理系统 单表的增删改查 1.创建项目 2.注释掉中间件 就可以提交post 请求 3.配置静态文件 并手动创建static 文件夹存放静态文件 二.具体的数据库配置 1.创建数据库 2. ...
- RabbitMQ “Hello world!”
本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“. 首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列.它实现 ...
- window下安装itchat库
itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. pip 是 Python 著名的包管理工具,在 Python 开发中必不可少. 1.安装 检查你有没有安装了pip:运行 ...
- 2017年全国大学生物联网设计竞赛(TI杯)华东分赛区决赛总结
全国大学生物联网设计竞赛(TI杯)是由教育部高等学校计算机类教学指导委员会主办.上海交通大学电子信息与电气工程学院承办.德州仪器半导体技术公司(TI)协办的赛事,自2014年设立以来,一直是物联网领域 ...
- 【转】Asp.NetMve移除HTTP Header中服務器信息Server、X-AspNet-Version、X-AspNetMvc-Version、X-Powered-By:ASP.NET
默認情況下Chrome中截獲的HTTP Header信息: Cache-Control: Content-Encoding:gzip Content-Length: Content-Type:text ...
- docker发布netcore网站-零散记录
安装docker 安装Linux,使用云服务器或者虚拟机 参考:http://www.cnblogs.com/wangjieguang/p/hyper-v-ubuntu.html 系统更新 sudo ...
- 一文总结 Linux 虚拟网络设备 eth, tap/tun, veth-pair
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Linux 虚 ...