2011-04-14 4 views
0

jQueryPagination 플러그인을 구현하여 리피터 컨트롤을 쉽게 페이징 할 수있게했습니다. 이것은 잘 작동하지만,이 페이지에는 사용자가 티켓 번호를 검색 할 수있는 사용자 정의 컨트롤이 있습니다. 검색 할 버튼을 클릭하면 페이지 매김이 사라지고 모든 리피터 정보와 반환 된 검색 결과가 표시됩니다.내 asp.net 버튼을 클릭하면 내 jQuery 페이지가 기능적으로 중단됩니다.

링크 버튼을 클릭하면 jQuery가 존재하지 않는 것 같습니다.

코드 :

<div id="msgLinks" class="subtabs"> 
      <asp:TextBox runat="server" ID="txtSearchTicket"></asp:TextBox> 
      <asp:LinkButton ID="lbSearch" runat="server" Text="Search" CausesValidation="false" 
       onclick="lbSearch_Click" /> 
</div> 

jQuery를 내가 심지어

$(".subtabs a").click(function() { 
     alert("Clicked"); 
     $('#tblRecAct').paginateTable({ 
      rowsPerPage: 5, 
      Title: ".h1RecentActivity" 
     }); 
    }); 

를 호출 시도했지만 여전히 작동하지 않습니다

$('#tblRecAct').paginateTable({ 
     rowsPerPage: 5, 
     Title: ".h1RecentActivity" 
    }); 
    $('#tblMSG').paginateTable({ 
     rowsPerPage: 2, 
     Title: ".h1SubmittedMessages", 
     pager: ".pager2", 
     pageNumbers: ".pageNumbers2" 

    }); 

(페이지로드에서 작동). 어떤 아이디어?

편집 요청에 따라 새로운 코드 :

페이지 -

public string _Js = ""; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       rptRecentMessages.DataSource = CMS.Model.Profile.RecentMessages(0, ""); 
       rptRecentMessages.DataBind(); 
       _Js = "CreatePaging();"; 
       LoadStatusMessages(); 
      } 
     } 

사용자 컨트롤 (검색 버튼을 보유) -

rptRecentActivity.DataSource = CMS.Model.Profile.RecentActivity(20); 
rptRecentActivity.DataBind(); 
_Js = "CreatePaging();"; 

검색 버튼을 클릭 -

protected void lbSearch_Click(object sender, EventArgs e) 
     { 
      string searchTerms = txtSearchTicket.Text; 
      if (searchTerms == "") 
       txtSearchTicket.Style.Add("border", "1px solid red"); 
      else 
      { 
       rptRecentMessages.DataSource = CMS.Model.Profile.RecentMessages(1, searchTerms); 
       rptRecentMessages.DataBind(); 
       _Js = "CreatePaging();"; 
       LoadStatusMessages(); 
      } 
     } 
페이지에

jQuery를 코드 -

<script type="text/javascript"> 
    $(document).ready(function() { 
     function CreatePaging(){ 
      $('#tblRecAct').paginateTable({ 
       rowsPerPage: 5, 
       Title: ".h1RecentActivity" 
      }); 
      $('#tblMSG').paginateTable({ 
       rowsPerPage: 2, 
       Title: ".h1SubmittedMessages", 
       pager: ".pager2", 
       pageNumbers: ".pageNumbers2" 

      }); 
     } 

     $().ready(function(){ 
      <% =(this._Js) %> 

     }); 

    }); 



</script> 

내가 디버깅 지금 검색 링크를 클릭하고, 나는를 Page_Load에 다시 게시하지 않습니다 나는 이유를 모르겠습니다.

+0

ASP 코드가 생성하는 실제 HTML을 붙여 넣기 – JohnP

+0

jquery ur를 사용하여 영혼을 물리 칠 때 왜 'onclick = "..."'속성을 사용합니까? 포즈 – Val

+0

나는 그것이 linkbutton을 클릭 할 때 포스트 백이 발생하여 현재 동작을하기 때문이라고 생각합니다. linkbutton을 클릭 할 때 발생하는 코드의 마지막 줄 아래에'return false; '를 넣으십시오. –

답변

2
는 클릭에서 링크를 방지 할 수 코드 return false;를 추가

$(".subtabs a").click(function() { 
    alert("Clicked"); 
    $('#tblRecAct').paginateTable({ 
     rowsPerPage: 5, 
     Title: ".h1RecentActivity" 
    }); 
    return false; 
}); 

에 클릭을 변경

하지만 jQuery 코드를 실행합니다. 쉽게 뒤에 코드에서

function CreatePaging(){ 
    $('#tblRecAct').paginateTable({ 
     rowsPerPage: 5, 
     Title: ".h1RecentActivity" 
    }); 
    $('#tblMSG').paginateTable({ 
     rowsPerPage: 2, 
     Title: ".h1SubmittedMessages", 
     pager: ".pager2", 
     pageNumbers: ".pageNumbers2" 

    }); 
} 

$().ready(function(){ 
    <% =(this._Js) %> 
}); 

그런 다음 C#을에서 호출 할 수 있도록

편집

기능으로 jQuery 코드를 넣어라는 공공 문자열 변수가 _Js 때 당신은 리피터를 바인드합니다. _Js = "CreatePaging();";

+0

확실히 페이지 매기기의 문제가 해결되었지만 지금은 버튼 클릭에 대한 C# 코드가 호출되지 않습니다. – EvanGWatkins

+0

Ahh, ok 그럼 다시 게시 할 때 jQuery를 다시 출력해야합니다.따라서 페이지에서 실행 중이더라도 포스트 백 후에 다시 출력하십시오. –

+0

포스트 백 후에 다시 실행하려면 어떻게해야합니까? 가능한 경우 내 C#에서 jQuery 코딩을 제거하고 싶습니다.하지만 필요한 경우 어떻게 할 수 있습니까? – EvanGWatkins

관련 문제