失去CSS类通过jQuery的加在的UpdatePanel局部回传 [英] Losing css class added through jquery on updatepanel partial postback

查看:189
本文介绍了失去CSS类通过jQuery的加在的UpdatePanel局部回传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用ASP.NET AJAX使用jQuery。我有一个click事件,增加/删除CSS类的对象在一个UpdatePanel,但是当ASP.NET部分回发时,我失去了状态。下面是我试图创建最小的例子;我该如何保持CSS类的状态?

 <%@页面语言=C#AutoEventWireup =真codeFILE =Test.aspx.cs继承=测试%GT;!< D​​OCTYPE HTML PUBLIC -  // W3C // DTD XHTML 1.0过渡// ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">< HTML的xmlns =htt​​p://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;
    < D​​IV CLASS =测试>        < ASP:标签ID =Label1的=服务器文本=标签>< / ASP:标签>    < / DIV>
    < D​​IV 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆