asp.net 分页跳转问题

图片说明
图片说明
点击第二分页,却跳到第一。哪里代码出问题?

不清楚你的BlogManager.GetAll函数的实现。
根据你的调用,我猜测第二个参数你写错了。
如果你可以发一下这个函数的实现就明白了。

分页的方法:
1. 你要考虑怎么把页码关联到html元素上
比如用span元素,表示第9页:
html
<span>9</span>

2. 你要考虑怎么在用户点击这个页码时,向服务端传递页码,这可以有两种方式
用html的<a/>标签来做:
<a href="http://host:port/blog.aspx?pagenum=9">9</a>

用javascript来做:
获取你的页码控件所关联的页码,get或者post你能处理分页记录返回的aspx页面或httphandler.

在服务端,你拿到了页码后,过程大概如下,伪代码描述:

//pageNum是页码,页码从1开始
//size是每页大小,一页都少个记录
//这个函数返回应该跳过多少个记录,记录来自数据库的表或者你其它数据集合
public int getSkipCount(int pageNum,int size) {
    return (pageNum - 1) * size;
}

//这个函数返回你要的记录
public List getRecords(int pageNum,int pageSize) {
    RetFromDatabase ret = database.poll(pageNum,pageSize);
}

public RetFromDatabase poll(int pageNum,int pageSize) {
    //这个是你要跳过的数据
    int SKIP_COUNT = getSkipCount(pageNum,pageSize);
    int COVER_COUNT = SKIP_COUNT + pageSize; 
    //这里是你从数据库或其它数据源获取数据的代码

    //如果你从sql中获取数据,会类似这样
    /*
    select user.id,tmp.total
    from user
        left join 
            /*COVER_COUNT = SKIP_COUNT + PAGE_SIZE */
            (select top COVER_COUNT id,row_number() over (order by id) total
            from user) as tmp
        on user.id equals tmp.id
    where user.id > SKIP_COUNT
    */

    //如果你从其它数据源获取数据,会类似这样
    db.user.find().sort({"_id":1}).skip(SKIP_COUNT).limit(pageSize);
}

//TRecord:你的记录类型
//这个类
public class RetFromDatabase<TRecord> {
    public int total;
    public IList<TRecord> records;
}