【问题标题】:Simple ASP.NET Endless Pagination简单的 ASP.NET 无休止分页
【发布时间】:2012-12-11 20:11:44
【问题描述】:

我希望为 cmets 部分实现一些简单的无休止分页,类似于 Youtube cmets,您可以在底部单击 Show More,它会加载更多 cmets,但会保持之前的 cmets 状态。

我想我可以在带有 Ajax 控件工具包和一点 Jquery 的 ListView 的 UpdatePanel 中做到这一点,但只需要一些指导。我正在考虑显示返回的前 4 个项目并将它们数据绑定到我的 ListView,ListView 将被包装在带有“显示更多”按钮的 UpdatePanel 中,当单击该按钮时,它将向数据源添加 4 个并重新绑定ListView,但这不会顺利地将 4 个 cmets 添加到底部,而是 ListView 部分会刷新以显示新的 cmets。

有没有更顺畅/更好的方法来做到这一点?我正在使用网络表单。

【问题讨论】:

    标签: asp.net webforms pagination comments cwac-endless


    【解决方案1】:

    老实说,我会为此避免使用整个 Web 表单模型(包括 UpdatePanel)。在这种情况下,它会增加很多开销和复杂性。

    将 AJAX 请求发送回处理程序(无论是什么,为此目的构建的 ASPX 页面、Web 方法、HttpHandler、MVC 控制器等)并返回 JSON。由于 cmets 在结构上相当简单,因此根据需要插入/构建关联的标记应该不难。

    我使用这种方法在一个 ASP.Net Web 表单应用程序中构建了一个无尽的评论系统,并且效果很好。该页面呈现为带有用户控件的普通 ASPX。 cmets 的用户控件只输出一点脚本。

    我使用对控制器的请求加载我的初始 cmets,当用户滚动时,我只需向控制器询问下一个数据块,直到控制器告诉我我已经到达集合的末尾(您也可以添加一个上限,这样用户就不会加载太多记录并导致浏览器崩溃)。

    示例

    • 使用jQuery.ajax()发出请求
    • 在成功回调中,您可以将传递给它的数据视为 JavaScript 对象
    • 循环遍历所有项目并创建/附加 DOM 节点。

    var element = $("#comments"); // this is your node with all comments
    
    $.ajax({
        type: "POST",
        url: "ClientApi/Comments/_GetPaged", // this handler builds JSON
        dataType: "json",
        data: { pageIndex: 5 }, // your input values here
        cache: false,
        success: function (data) {
            for (var i = 0; i < data.length; i++) {
                var comment = data[i];
                var itemElement = $("<div/>").appendTo(element);
    
                // do whatever you want here, just remember that user input 
                // should be sanitized somewhere during the process
                itemElement.html(comment.text);
            }
        }
    });
    

    【讨论】:

    • 嗨,谢谢,这是有道理的,我可以使用 JQuery post 将其发送回 ashx/aspx 并返回数据,但我对以 ​​JSON 形式返回的数据有点困惑我将如何转这回到在我的转发器/列表视图中创建的 html 表/行?您在某处是否有示例,返回的数据从 ashx/aspx.cs 附加回 html?谢谢!
    • 如果您想从 asp.net 返回 json,请查看此帖子 asp.net web forms json return result
    • @User101 - 我添加了一个示例,赛普利发布的链接也可能有帮助。
    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 2013-08-14
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2013-08-20
    • 2016-06-11
    相关资源
    最近更新 更多