WinForm分頁控制項

2021-10-20 02:36:50 字數 3773 閱讀 4686

分頁控制項是程式開發的資料載入顯示中較常用,為了能夠靈活重用,以下使用將該功能包裝成使用者控制項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兩個控...