失去CSS类通过jQuery的加在的UpdatePanel局部回传 [英] Losing css class added through jquery on updatepanel partial postback
本文介绍了失去CSS类通过jQuery的加在的UpdatePanel局部回传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用ASP.NET AJAX使用jQuery。我有一个click事件,增加/删除CSS类的对象在一个UpdatePanel,但是当ASP.NET部分回发时,我失去了状态。下面是我试图创建最小的例子;我该如何保持CSS类的状态?
<%@页面语言=C#AutoEventWireup =真codeFILE =Test.aspx.cs继承=测试%GT;!< DOCTYPE HTML PUBLIC - // W3C // DTD XHTML 1.0过渡// ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">< HTML的xmlns =http://www.w3.org/1999/xhtml>
<头=服务器>
<标题>< /标题> <风格类型=文/ CSS>
。主动{背景:#000000;颜色:#FFFFFF; }
.TEST {}
< /风格>
<脚本SRC =jQuery的-1.3.2.js类型=文/ JavaScript的>< / SCRIPT> < SCRIPT LANGUAGE =JavaScript的类型=文/ JavaScript的> 功能页面加载(发件人,参数){ //重新绑定在局部回传丢失事件
$(测试)解除()。 $(测试)。点击(函数(){ $(测试)removeClass移除(活动)。
$(本).addClass(活动); }); } < / SCRIPT>
< /头>
<身体GT;
<表ID =form1的=服务器>
< ASP:的ScriptManager ID =ScriptManager1=服务器>
< / ASP:ScriptManager的> < ASP:定时器ID =定时器=服务器间隔=30000ontick =Timer1_Tick>
< / ASP:定时器> < ASP:的UpdatePanel ID =UpdatePanel1=服务器> <&触发器GT;
< ASP:AsyncPostBackTrigger控件ID =定时器事件名称=嘀/>
< /触发器> <&的ContentTemplate GT;
< DIV CLASS =测试> < ASP:标签ID =Label1的=服务器文本=标签>< / ASP:标签> < / DIV>
< DIV CLASS =测试> < ASP:标签ID =Label2的=服务器文本=标签>< / ASP:标签> < / DIV> < /&的ContentTemplate GT;
< / ASP:的UpdatePanel> < /表及GT;
< /身体GT;
< / HTML>
解决方案
考虑使用客户端PageRequestManager事件保存/恢复状态(注意,以下是JavaScript的):
功能即时存档(发件人,参数)
{
// code保存更新面板控件状态
}功能ReapplyState(发件人,参数)
{ // code重新申请更新面板控件状态
}。Sys.WebForms.PageRequestManager.getInstance()add_beginRequest(即时存档);
。Sys.WebForms.PageRequestManager.getInstance()add_endRequest(ReapplyState);
I'm using ASP.NET Ajax with JQuery. I have a click event that adds/removes css classes on objects in an UpdatePanel, but when the ASP.NET Partial postback occurs, I lose the "state." Here is minimal example I tried to create; how do I keep the css class state?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.active { background: #000000; color: #ffffff; }
.test {}
</style>
<script src="jquery-1.3.2.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function pageLoad(sender, args) {
// rebind events lost in partial postback
$(".test").unbind();
$(".test").click(function() {
$(".test").removeClass("active");
$(this).addClass("active");
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Timer ID="Timer1" runat="server" Interval="30000" ontick="Timer1_Tick">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<div class="test">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
<div class="test">
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
解决方案
Look into using the client PageRequestManager events to save/restore state (note, the following is JavaScript):
function SaveState(sender, args)
{
// code to save state of update panel controls
}
function ReapplyState(sender, args)
{
// code to reapply state of update panel controls
}
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(SaveState);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(ReapplyState);
这篇关于失去CSS类通过jQuery的加在的UpdatePanel局部回传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文