分頁控制項是程式開發的資料載入顯示中較常用,為了能夠靈活重用,以下使用將該功能包裝成使用者控制項usercontrol,整體控制項效果圖如下:
分頁paging完整**
using system;
using system.collections.generic;
using system.componentmodel;
using system.drawing;
using system.data;
using system.linq;
using system.text;
using system.windows.forms;
public event eventpaginghandler eventpaging;
#region 公開屬性
private int _pagesize = 20;
/// /// 每頁顯示記錄數(預設20)
///
public int pagesize
set
else if (value == -1)
else}}
private int _currentpage = 1;
/// /// 當前頁
///
public int currentpage
set
else}}
private int _totalcount = 0;
/// /// 總記錄數
///
public int totalcount
set
else
this.lbltotalcount.text = this._totalcount.tostring();
calculatepagecount();
this.lblrecordregion.text = getrecordregion();}}
private int _pagecount = 0;
/// /// 頁數
///
public int pagecount
set
else
this.lblpagecount.text = _pagecount + "";}}
#endregion
/// /// 計算頁數
///
private void calculatepagecount()
else
}/// /// 獲取顯示記錄區間(格式如:1-20)
///
///
private string getrecordregion()
else //有多頁
else if(this.currentpage==this.pagecount) //當前顯示為最後一頁
else //中間頁}}
/// /// 資料繫結
///
public void bind()
if (this.currentpage>this.pagecount)
this.txtboxcurpage.text = this.currentpage+"";
this.lbltotalcount.text = this.totalcount+"";
this.lblpagecount.text = this.pagecount+"";
this.lblrecordregion.text = getrecordregion();
if (this.currentpage==1)
else
if (this.currentpage == this.pagecount)
else
if (this.totalcount==0)
}private void btnfirst_click(object sender, eventargs e)
private void btnprev_click(object sender, eventargs e)
private void btnnext_click(object sender, eventargs e)
private void btnlast_click(object sender, eventargs e)
/// /// 改變每頁條數
///
///
///
private void combopagesize_selectedindexchanged(object sender, eventargs e)
else
this.bind();} }
}
呼叫方式:
在呼叫的窗體中拖入該控制項,在initializecomponent();下加入
this.paging1.eventpaging += new eventpaginghandler(paging1_eventpaging);//初始化自定義事件
然後實現該事件,主要在其中繫結分頁資料
void paging1_eventpaging(eventargs e)//事件實現
private void **databind()
else
_dt= cutlinebll.getpaging_bll(paging1.pagesize, paging1.currentpage, out sumcount);
datagridview1.autogeneratecolumns = false;
datagridview1.datasource = _dt;
paging1.totalcount = sumcount;
}load事件中初始化資料並關聯分頁控制項
**databind();
paging1.bind();
本文採用的輕量型資料庫sqlite,其分頁sql語句如下
/// /// 通用分頁查詢方法
///
/// 連線字串
/// 表名
/// 查詢欄位名
/// where條件
/// 排序條件
/// 每頁資料數量
/// 當前頁數
/// 資料總量
/// datatable資料表
public static datatable selectpaging(string tablename, string strcolumns, string strwhere, string strorder, int pagesize, int currentindex, out int recordout)
from where order by limit offset ";
int offsetcount = (currentindex - 1) * pagesize;
string commandtext = string.format(pagingtemplate, strcolumns, tablename, strwhere, strorder, pagesize.tostring(), offsetcount.tostring());
dataset ds= executedataset(commandtext);
dt = ds.tables[0];
return dt;
}
其中在sqlite中limit為顯示的條數,offset為從多少條後開始讀取資料。
winform通用分頁控制項
using system using system.collections.generic using system.componentmodel using system.drawing using system.data using system.linq using system.text u...
Winform分頁控制項使用詳細介紹
自從上篇隨筆 winform分頁控制項最新版本發布,並提供基於dotnetbar介面的版本 分頁控制項效果 實現步驟 1 在visual studio開發環境的工具箱中,新增乙個分頁控制項 可以其他名稱 的專案,然後選擇whc.pager.wincontrol.dll檔案,匯入分頁控制項的工具箱圖示...
Winform分頁控制項使用詳細介紹
自從上篇隨筆 分頁控制項效果 實現步驟 1 在visual studio開發環境的工具箱中,新增乙個分頁控制項 可以其他名稱 的專案,然後選擇whc.pager.wincontrol.dll檔案,匯入分頁控制項的工具箱圖示,如下所示。其中wingridviewpager和wingridview兩個控...