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;

  } 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM