zoukankan      html  css  js  c++  java
  • GridControl分页问题

    1、分页的存储过程:

    create proc PageNum
    @PageSize int, --每页显示条数
    @PageIndex int, --当前是第几页
    @totalRows int output, --总行数
    @totalPages int output --总页数
    as
    declare @startId int
    declare @endId int
    set @startId = @PageSize*(@PageIndex-1)+1
    set @endId = @startId+@PageSize-1
    select @totalRows=COUNT(*) from Books
    set @totalPages=@totalRows/@PageSize
    if(@totalRows%@PageSize != 0) --如果总行数除每页显示数据量的值不等于0,则总页数得加1
    begin
    set @totalPages=@totalPages+1
    end
    declare @IndexTable table(Id int identity(1,1) ,nId int)
    insert into @IndexTable select Id from Books
    select * from @IndexTable as t ,Books as b where t.Id>=@startId and t.Id<=@endId and t.nId=b.Id
    go
      
    declare @tr int --总行数
    declare @tp int --总页数
    exec PageNum 4,2,@tr output ,@tp output
    print '这是总页数'+convert(varchar,@tp) --数据转换
    print @tr   
    

      2.可以一次性读到DataTable后,再做处理

    private int pageSize = 0; //每页显示行数
      private int pageCurrent = 0; //当前页号
      private int pageCount = 0; //页数=总记录数/每页显示行数
      private int nCurrent = 0; //当前记录行号
      private int nMax = 0; //总记录数
      private DataTable srcTable = null; //元数据
    
      private void First_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent = 1; //当前页数从1开始
      nCurrent = 0; //当前记录数从0开始
    
      if (srcTable == null || srcTable.Rows.Count == 0)
      return;
    
      DataTable table = LoadPageData();
      ChangeDataSoure(table);
    
      First.Enabled =false;
      Prev.Enabled = false;
      Next.Enabled = true;
      End.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }
    
      private void Prev_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent--;
      nCurrent = pageSize * (pageCurrent - 1);
    
      if (srcTable == null || srcTable.Rows.Count == 0)
      return;
      DataTable table = LoadPageData();
      ChangeDataSoure(table);
    
      bool b = pageCurrent <= 1 ? false : true;
      First.Enabled = b;
      Prev.Enabled = b;
      Next.Enabled = true;
      End.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }
    
      private void Next_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent++;
      nCurrent = pageSize * (pageCurrent - 1);
    
      if (srcTable == null || srcTable.Rows.Count == 0)
      return;
      DataTable table = LoadPageData();
      ChangeDataSoure(table);
    
      bool b = pageCurrent >= pageCount ? false : true;
      Next.Enabled = b;
      End.Enabled = b;
    
      First.Enabled = true;
      Prev.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }
    
      private void End_Click(object sender, EventArgs e)
      {
      try
      {
      pageCurrent = pageCount;
      nCurrent = pageSize * (pageCurrent - 1);
    
      if (srcTable == null || srcTable.Rows.Count == 0)
      return;
    
      DataTable table = LoadPageData();
      ChangeDataSoure(table);
    
      Next.Enabled =false;
      End.Enabled = false;
      First.Enabled = true;
      Prev.Enabled = true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message);
      }
      }
    
      private void InitPageSet()
      {
      pageSize = 30; //设置页面行数
      nMax = srcTable.Rows.Count;
      pageCount = (nMax / pageSize); //计算出总页数
    
      if ((nMax % pageSize) > 0)
      {
      pageCount++;
      }
    
      pageCurrent = 1; //当前页数从1开始
      nCurrent = 0; //当前记录数从0开始
    
      First.Enabled =false;
      Prev.Enabled = false;
    
      bool b = pageCurrent == pageCount ? false : true;
      Next.Enabled = b;
      End.Enabled = b;
      }
    
      private DataTable LoadPageData()
      {
      int nStartPos = 0; //当前页面开始记录行
      int nEndPos = 0; //当前页面结束记录行
      DataTable dtTemp = null;
      if (srcTable == null || srcTable.Rows.Count == 0)
      return srcTable;
      try
      {
      dtTemp = srcTable.Clone(); //克隆DataTable结构框架
      if (pageCurrent == pageCount)
      {
      nEndPos = nMax;
      }
      else
      {
      nEndPos = pageSize * pageCurrent;
      }
    
      nStartPos = nCurrent;
      //从元数据源复制记录行
      for (int i = nStartPos; i < nEndPos; i++)
      {
      dtTemp.ImportRow(srcTable.Rows[i]);
      nCurrent++;
      }
    
      textEdit1.Text = pageCurrent.ToString();
      Page.Text = string.Format("/{0}页", pageCount);
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message + "LoadPageData");
      }
      return dtTemp;
      }
    
      private void ChangeDataSoure(DataTable table)
      {
      if (table == null)
      return;
      gridView1.Columns.Clear();
      gridControl1.DataSource = null;
      gridControl1.DataSource = table;
    
      } 
    

      

  • 相关阅读:
    Python核心编程 练习
    python学习
    mongo查询某个字段是否存在,并删除记录里的这个字段
    python打印详细的异常信息
    tornadoioloop.py单例
    python int异常 python isdigit
    【Apache ZooKeeper】命令行zkCli.sh使用指南
    安装mysql-python报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 65: ordinal not in range(128)
    pydev去掉右边的预览栏minimap
    python中staticmethod classmethod及普通函数的区别
  • 原文地址:https://www.cnblogs.com/yuxiuting/p/2811252.html
Copyright © 2011-2022 走看看