黑马程序员技术交流社区

标题: 数据库 [打印本页]

作者: duanhuilin    时间: 2012-10-24 09:02
标题: 数据库
哪路高手给咱讲讲数据库分页技术
作者: 许庭洲    时间: 2012-10-24 20:15
假设每一页显示的数据条数为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);
}
作者: 王晨    时间: 2012-12-14 20:27
比如你用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();
    }
这样就可以实现分页 了!

作者: 王晨    时间: 2012-12-14 20:30
补充一下:这是那个  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();        
    }

作者: 刘文超    时间: 2013-1-1 08:30
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
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2