關鍵詞: downmoon,c#,分頁
通用asp.net數據分頁控件
對于幾乎所有的數據表現web應用來說,組織好數據的顯示方式、避免給用戶帶來混亂的感覺就是最主 要的目標之一。每個頁面顯示20條記錄當然是可以接受的,但每頁顯示10000條記錄就很容易給用戶帶來不便了。將數據分成多個頁面顯示,即對數據進行分 頁,是解決此類問題的最常見的辦法。
一、慨述
asp.net本身只提供了一個支持數據分頁的控件,即 datagrid分頁控件,不過它比較適合intranet環境使用,對于internet環境來說,datagrid分頁控件提供的功能似乎不足以構造 出靈活的web應用。其中一個原因是,datagrid控件對web設計者放置分頁控件的位置和分頁控件的外觀都有限制,例如,datagrid控件不允 許垂直放置分頁控件。另一個能夠發揮分頁技術優勢的控件是repeater,者可以利用repeater控件快速配置數據的顯示方式,但分頁功 能卻需要開發者自己實現。數據源在不斷地變化,數據表現方式也千差萬別,如果針對這些不斷變動的條件分別定制分頁控件,顯然太浪費時間了,構造一個不限于 特定表現控件的通用分頁控件將極大地有利于節省時間。
一個優秀的通用數據控件不僅提供常規的分頁功能,而且還要能夠:
⑴ 提供“首頁”、“上一頁”、“下一頁”、“末頁”分頁導航按鈕。
⑵ 根據數據顯示情況調整自身的狀態,即具有數據敏感性。如果分頁控件被設置成每頁顯示10個記錄,但實際上只有9個記錄,那么分頁控件不應該顯示出來;在數 據分成多頁顯示的情況下,第一個頁面的“首頁”、“上一頁”按鈕不應顯示出來,最后一個頁面的“下一頁”、“末頁”按鈕也不應該顯示出來。
⑶ 不能依賴于特定的數據顯示控件。
⑷ 具有適應各種現有、將有數據源的能力。
⑸ 應當能夠方便地配置顯示方式,輕松地集成到各種應用之中。
⑹ 當分頁就緒時,提醒其他控件。
⑺ 即使是缺乏經驗的web設計者,也要能夠毫無困難地使用。
⑻ 提供有關分頁信息的屬性數據。
目前市場上已經有一些提供上述功能的商業性控件,不過都價格不菲。對于許多開發者來說,自己構造一個通用的分頁控件是最理想的選擇。
圖一顯示了本文通用分頁控件的運行界面,其中用于顯示的控件是一個repeater控件。分頁控件由兩類部件構成:四個導航按鈕,一組頁面編號鏈接。
用戶可以方便地改換顯示控件、改變分頁控件本身的外觀。例如,在圖一中,和分頁控件協作的顯示控件可發換成一個datagrid控件,頁面編號鏈接和四個導航按鈕分兩行顯示。
asp.net 支持創建定制web控件的三種方式:用戶控件,復合控件,自定義控件。第三種控件即自定義控件的名稱很容易引起誤解。實際上,所有這三種控件都應該算是自 定義控件。復合控件和微軟所謂的自定義控件的不同之處在于,前者要用到createchildcontrols()方法, createchildcontrols()方法允許控件根據某些事件重新繪制自身。對于本文的通用分頁器,我們將使用復合控件。
下面的uml序列圖概括了通用分頁控件的一般機制。 
雖然我們的目標是讓通用分頁控件不依賴于表現數據的控件,但很顯然,總得有某種方法讓分頁控件訪問數據。每一個從control類繼承的控件都提供一個 databinding事件。我們把分頁器本身注冊成databinding事件的監聽器,分頁器就可以獲知數據的情況并修改數據。由于所有從 control類繼承的控件都有這個databinding事件,所以分頁器控件達到了不依賴于特定數據表現控件的目標——換句話說,分頁器控件可以綁定 到所有從control類派生的控件,即它能夠綁定到幾乎所有的web控件。
新聞熱點
疑難解答