2012-10-22 3 views
2

100000 개의 메시지를 표시하는 리피터 컨트롤이 있습니다. 사용자에게 모든 메시지를 표시하기 위해 다른 페이지를 사용하고 싶지 않습니다. 대신에 원하는 사용자가 한 번에 모든 메시지를로드하지 않고 아래로 스크롤하는 동안로드하십시오.asp.net에서 컨트롤에 데이터를 할당하는 방법

예 : Facebook 타임 라인. 당신은 페이스 북에서 본 것처럼, 뭔가를

<script type="text/javascript"> 
     $(document).ready(function e() { 
      $(window).scroll(function() { 
       if ($(window).scrollTop() == $(document).height() - $(window).height()) { 
        GetRecords(); 
       } 
      }); 

      function GetRecords() { 
       $("#loader").show(); 
       $.ajax({ 
        type: "POST", 
        url: "Demo.aspx/GetList", 
        data: {}, 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: OnSuccess, 
        failure: function (response) { 
         alert("Failure"); 
        }, 
        error: function (response) { 
         alert("Error"); 
        } 
       }); 
      } 

      function OnSuccess(response) { 
       $.map(response.d, function (item) { 
        $('#division').append("<div style='line-height:25px;'>" + item + "</div>"); 
       }); 
       $("#loader").hide(); 
      } 
     }); 
    </script> 

코드

public partial class Demo : System.Web.UI.Page { static List<string> list = new List<string>(); static int n=0; protected void Page_Load(object sender, EventArgs e) { n = 0; } public Demo() { for (int i = 1; i <= 1000; i++) { list.Add("List Item : " + i); } } [WebMethod] public static List<string> GetList() { var fiftyItems = list.Skip(n).Take(50); n = n + 50; return fiftyItems.ToList(); } } 

뒤에하지만 난 더 complected 제어 작업 할 : 내가 뭘하려 :

감사

편집 댓글, 그림 등.

+0

나는 내 질문을 편집했습니다. –

+0

[this answer] (http://stackoverflow.com/a/579046/944681)에 따라 aspx 페이지 (html 코드)를로드하도록 아약스 호출을 변경합니다. –

답변

0

추가 메시지를 표시하기 위해 리피터 컨트롤을 다시 바인딩해야하기 때문에 상당히 어려울 것입니다.

리피터를 UpdatePanel에 포함시키고 사용자가 메시지의 끝에 도달하면 리바인할 수 있습니다. 그러나 표시하고 싶은 메시지가 많을수록 검색해야 할 시간이 길어지고 다시 렌더링하는 데 시간이 오래 걸립니다. 그래서 눈에 띄는 지연이있을 수 있습니다.

대신 jQuery 또는 Ajax를 지원하는 다른 프레임 워크를 사용하여 추가 할 때마다 서버의 다른 메시지 청크를 가져 와서 페이지에 추가 할 수 있습니다. 전체 repeater를 전체 렌더링하지 않아도됩니다. 메시지.

관련 문제