windows應用程式中很少見有分頁的程式
資料夾中有上萬個檔案的時候微軟也沒讓使用者來翻頁檢視列表
記事本中的文字,某個系統功能的列表也都沒有分頁。(word文件是個例外)
知道web中的分頁是怎麼做出來的朋友一定知道winform做分頁會更簡單
winform程式一樣也不允許使用者一下子把資料庫中上萬條資料全部檢索出來
那麼怎麼讓winform程式即不用翻頁,又能分部載入資料呢
**如下:
一:窗體類
public
partial
class
form1 : form
protected
override
void
onload(eventargs e)
//為datagridview提供自己的資料管理操作
datagridview1.virtualmode
=true
;
this
.datagridview1.allowusertoaddrows
=false
;this
.datagridview1.allowusertoordercolumns
=false
;this
.datagridview1.selectionmode
=datagridviewselectionmode.fullrowselect;
//adjust the column widths based on the displayed values.
this
.datagridview1.autoresizecolumns(datagridviewautosizecolumnsmode.displayedcells);
//virtualmode為true並且需要顯示新資料時發生
datagridview1.cellvalueneeded
+=new
datagridviewcellvalueeventhandler(datagridview1_cellvalueneeded);
base
.onload(e);
}void
datagridview1_cellvalueneeded(
object
sender, datagridviewcellvalueeventargs e)
private
webpager initpager()}
二:page結構
public
struct
datapage
//////
獲取當前頁起始行的index
///public
intlowestindex
}///
///獲取當前頁的結束行的index
///public
inthighestindex
}///
///獲取起始行的index
//////
///public
static
intmaptolowerboundary(
introwindex)
//////
獲取結束行的index
//////
///private
static
intmaptoupperboundary(
introwindex)
//////
獲取當前行的頁碼
//////
///public
static
intmapcurrentpageindex(
introwindex)
return
pageindex;}}
三:webpager資料訪問類
通過訪問資料庫的分頁儲存過程獲取某一頁的資料
由於這個類的**並非我寫的,所以這裡不在公布了
此類公開的幾個欄位和乙個方法如下
每頁顯示條數 pagesize
當前顯示第幾頁 pageindex
共幾頁 pagecount
所有的條目數 totalcount
分頁的表或者實體 tablename
查詢的字段 queryfieldname
排序字段 orderstr
查詢的條件 querycondition
獲取資料 public datatable quickpagedata()
四:cache類(這個類包含了page結構的定義)
private
static
introwsperpage;
private
datapage cachepages;
public
datacolumncollection columncollenction
private
webpager datasupply;
//////
建構函式
//////
分頁類///
一頁幾行
public
cache(webpager datasupplier,
introwsperpage)
//////
判斷兩個快取頁中是否有當前行的資料
//////
當前行的index
///當前列的index
///當前cell的值
///如果有 返回true
private
bool
ifpagecached_thensetelement(
introwindex,
intcolumnindex,
refstring
element)
else
if(isrowcachedinpage(
1, rowindex))
return
false;}
//////
繪製**前獲取資料的方法
//////
當前行的index
///當前列的index
///返回**的值
public
string
retrieveelement(
introwindex,
intcolumnindex)
else
}///
///程式初始化時獲取第一頁和第二頁的資料
///private
void
loadfirsttwopages()
;this
.columncollenction
=p1.table.columns;
}///
//////
///當前行的index
///當前列的index
///反回當前cell的值
private
string
retrievedata_cacheit_thenreturnelement(
introwindex,
intcolumnindex)
//////
判斷根據當前行獲取的資料應該放在哪個頁當中快取起來
//////
當前行的index
///頁的index
private
intgetindextounusedpage(
introwindex)
return0;
}else
return0;
}}//////
判斷當前行是否在快取中
//////
頁的index
///當前行的index
///如果在返回true
private
bool
isrowcachedinpage(
intpagenumber,
introwindex)
寫這個demo用了三個多小時
WinForm分頁控制項
分頁控制項是程式開發的資料載入顯示中較常用,為了能夠靈活重用,以下使用將該功能包裝成使用者控制項usercontrol,整體控制項效果圖如下 分頁paging完整 using system using system.collections.generic using system.component...
winform通用分頁控制項
using system using system.collections.generic using system.componentmodel using system.drawing using system.data using system.linq using system.text u...
winform 的分頁問題
看了很多分頁,都是基於處理資料庫sql語句的操作,在這裡,我寫了乙個基於datatable的分頁,有興趣的朋友可以封裝,用於listview 和gridview的分頁。分頁 int totalcount 0 記錄總共的記錄數 static int page 0 記錄現在翻到第幾頁了 static i...