2

私は100000メッセージを表示するリピーターコントロールを持っています.ユーザーにすべてのメッセージを表示するために別のページを使用したくありません..時間。

例: 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();  
        }
    }

しかし、Facebook、コメント、写真などで見たような、より複雑なコントロールで作業したい..

4

1 に答える 1

0

追加のメッセージを表示するにはリピーター コントロールを再バインドする必要があるため、これは非常に難しい作業です。

リピーターを UpdatePanel に埋め込み、ユーザーがメッセージの最後に到達したときに再バインドできます。ただし、表示するメッセージが多ければ多いほど、取得する必要があるメッセージが多くなり、再レンダリングにかかる​​時間が長くなります。そのため、顕著な遅延が発生する可能性があります。

代わりに、jQuery または Ajax をサポートする別のフレームワークを使用して、さらにメッセージを追加するたびにサーバーから別のメッセージのチャンクを取得し、メッセージでいっぱいのリピーター全体を再レンダリングすることなく、それらをページに追加することをお勧めします。

于 2012-10-22T14:30:41.430 に答える