【问题标题】:Server side paging with ajax & jQuery使用 ajax 和 jQuery 的服务器端分页
【发布时间】:2012-09-13 08:55:38
【问题描述】:

好的。所以我有一个包含用户列表的表格。

<table id="UserTableContainer">
    <tr>
        <th>Firstname</th>
        <th>Lastname</th>
    </tr>
</table>

当我加载页面时,我调用一个 JSON 方法从服务器检索用户列表。

$(function () {
    $.getJSON(
        '/Account/UserList',
        null,
        function (data) {
            $.each(data, function (i, item) {
                PrintUsers(item);
            });
        });
});

我的 PrintUsers 方法使用 jQuery 模板将用户添加到表中的每一行。

function PrintUsers(item) {
$.template('userList', '<tr>\
 <td>${Firstname}</td>\
 <td>${Lastname}</td>\
 </tr>');

$.tmpl('userList', item).appendTo("#UserTableContainer");

在服务器端,我从 API 获取列表。

public JsonResult UserList()
{
    try
    {
        List<User> users;         

        users = LoadUser(new UserFilter());
        }
        return Json(users, JsonRequestBehavior.AllowGet);
    }
    catch (Exception ex)
    {
        return Json(JsonRequestBehavior.DenyGet);
    }
}

我用来获取列表的 API 已经内置了分页功能。有一个重载选项可以将 int startIndex 和 int pageSize 传递给 UserFilter() 对象。

我需要在我的 jQuery 和 ajax 调用中添加什么来向我的表添加分页功能?我迷失在我应该开始的地方。

【问题讨论】:

    标签: javascript jquery asp.net ajax paging


    【解决方案1】:

    假设您在第一次生成页面时知道有多少页面,您可以为分页列表创建一个列表块,例如 -

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        ...
    </ul>
    

    然后您可以将您的 jQuery 更改为类似 -

    function getPage(startPage, selectedPageSize) {
        $.getJSON(
            '/Account/UserList?startPage=' + startPage + '?pageSize=' + selectedPageSize,
            null,
            function (data) {
                $.each(data, function (i, item) {
                    PrintUsers(item);
                });
            }
        );
    }
    
    var pageSize = 10;
    $(document).ready(function() {
        getPage(0, pageSize);
    });
    
    $(function(){
        $('li').click(function() {
            var page = $(this).text();
            getPage(page, pageSize);
        });
    });
    

    【讨论】:

    • 不适用于对函数的 $('li').click( 调用。但是,当第一次填充页面时,该调用不在 DOMready 子句中。不过我会稍微修改一下。
    猜你喜欢
    • 2021-12-21
    • 2012-07-18
    • 2011-03-23
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多