A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© duanhuilin 中级黑马   /  2012-10-24 09:02  /  1795 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪路高手给咱讲讲数据库分页技术

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
假设每一页显示的数据条数为PageSize,当前页数(从0开始技术)为CurrentIndex,那么只要查询从第PageSize*CurrentIndex开始的PageSize条数据得到的结果就是当前页中的数据。
int CurrentIndex=0;
PageSize=10;
//按钮【首页】被点击
private void btnFirstButtonClick()
{
       CurrentIndex=0;
       DoSearch();
}

//按钮【尾页】被点击
private void btnLastButtonClick()
{
       CurrentIndex=GetTotalCount()/PageSize;
       DoSearch();
}

//按钮【下一页】被点击
private void btnNextButtonClick()
{
      CurrentIndex=CurrentIndex+1;
      DoSearch();
}

按钮【上一页】被点击
private void btnNextButtonClick()
{
      CurrentIndex=CurrentIndex-1;
      DoSearch();
}


//计算表中的总数据条数
private int GetToatalCount()
{
      ResultSet rs = ExecuteSQL("SELECT COUNT(*) AS TOTALCOUNT FROM T_Employee");
      return rs.getInt("TOTALCOUNT");
}

//查询当前页中的数据
private void DoSearch(0
{
        //计算当前页的起始行数
        String startIndex=(CurrentIndex *PageSize).ToString();
        String size = PageSize.ToString();
        ResultSet rs=ExecuteSQL("SELECT * FROM T_Employee LIMIT" +startIndex+","size);
        //显示查询结果
        DisplayResult(rs);
}
回复 使用道具 举报
比如你用DataGrid 显示数据时,如下:
  1. <aspataGrid ID="dgNotice" runat="server" >
  2.       <Columns>
  3.            ……………………
  4.       </Columns>
  5.             <agerStyle Mode="NumericPages" />
  6. </aspataGrid>
复制代码
你只要如上所述,再其中加入 <agerStyle Mode="NumericPages" />,然后再DataGrid的PageIndexChanged事件中写入代码如下:
protected void dgNotice_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        dgNotice.CurrentPageIndex = e.NewPageIndex;
        NoticeDataBind();
    }
这样就可以实现分页 了!
回复 使用道具 举报
补充一下:这是那个  NoticeDataBind()函数,刚刚忘记发了……给你补上!那个Class1是我写的一个类,就是执行SQL语句的,如果你需要我再发给你!这个函数很简单,就是在datagrid中显示数据!
    protected void NoticeDataBind()
    {
        string sql;
        sql = "select * from PM_notice ";
        DataTable dt = Class1.GetDsFromSql(sql).Tables[0];
        dgNotice.DataSource = dt;
        dgNotice.DataBind();        
    }

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
sql语句分页也是一种好办法,
优点1是不局限与任何语言
优点2是不会将分页和程序页面嵌套在一起、很乱的。。
附上代码:
  1. SELECT TOP 页大小 *
  2. FROM table1
  3. WHERE id NOT IN
  4.           (
  5.           SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
  6.           )
  7. ORDER BY id
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马