2009-11-13 3 views
1

저는 ASP.NET Ajax를 JQuery와 함께 사용하고 있습니다. UpdatePanel의 개체에 CSS 클래스를 추가/제거하는 클릭 이벤트가 있지만 ASP.NET 부분 다시 게시가 발생하면 "상태"가 손실됩니다. 다음은 내가 만들려고하는 최소한의 예입니다. 어떻게하면 CSS 클래스 상태를 유지합니까?updatepanel 부분 포스트 백에서 jquery를 통해 CSS 클래스가 손실 됨

<%@ 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> 

답변

3

봐 (다음주의는 자바 스크립트입니다) : Zincorp에서

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); 
+0

예의 당신이 정교하게 수를 추가? 어떻게 국가를 구할 수 있을까요? 글로벌 js 변수, 세션 변수, ?? 코드 숨김의 개인 변수는 부분 포스트 백 – user210757

+0

에서 값 (상태)을 잃는 것처럼 보입니다. 전역 js 변수를 통해. 페이지가 남아 있고 부분 만 업데이트 중이기 때문에 변경되지 않습니다. 위의 코드는 모두 자바 스크립트입니다. – zincorp

0

updatepanel은 범위 내에서 DOM을 대체하므로 사용자가 변경 한 사항은 포스트 백간에 유지되지 않습니다.

새로운 요소가 문서에 추가되면 jQuery의 "라이브"이벤트를 살펴볼 수 있습니다./저장 상태를 복원하기 위해 클라이언트 PageRequestManager 이벤트를 사용으로

관련 문제