asp.net 分頁(yè)潛談
更新時(shí)間:2009年06月01日 16:10:14 作者:
最近研究了一下Asp.net下的分頁(yè)功能。以前受前輩們的誤導(dǎo),人云已云的以為做分頁(yè)很難很麻煩。這一研究才發(fā)現(xiàn),分頁(yè)也不過(guò)如此嘛。
要做出分頁(yè)效果不外乎有這幾個(gè)方向入手,從數(shù)據(jù)源、從服務(wù)器或者從客戶端。不管你是怎么做都跳不出這三個(gè)地方(其實(shí)B/S結(jié)構(gòu)的開(kāi)發(fā)了就是在這三個(gè)地方做文章,只不過(guò)有些微變化而已)。
先說(shuō)說(shuō)從數(shù)據(jù)源入手的吧。一想到數(shù)據(jù)源做分頁(yè),自然是T-SQL了。什么存儲(chǔ)過(guò)程,視圖、特殊函數(shù)(當(dāng)然,這里指的只是我熟悉的MS)。能用到的SQL知識(shí)都往上砸。具體的實(shí)現(xiàn)就不說(shuō)了,忒Easy。代碼部分基本沒(méi)有什么,只要每次更改T-SQL語(yǔ)句就行了。不好的就是太受數(shù)據(jù)庫(kù)的限制,程序中一丁點(diǎn)的變化,所有有關(guān)SQL的地方都要變,有些甚至要改變數(shù)據(jù)庫(kù)的結(jié)構(gòu)。沒(méi)有扎實(shí)的數(shù)據(jù)庫(kù)知識(shí)是萬(wàn)萬(wàn)不行了。
服務(wù)器端做分頁(yè)可能是行家們最常用到的方法了。因?yàn)橛邪b好的數(shù)據(jù)綁定控件??!拿來(lái)就可以用。但是,那么說(shuō)微軟是大佬級(jí)人物呢,做個(gè)東西都深謀遠(yuǎn)慮。把菜鳥(niǎo)跟恐龍都考慮在內(nèi)。你如果是菜鳥(niǎo)就用GridView,內(nèi)置的分頁(yè)讓你幾乎不用寫(xiě)代碼就能實(shí)現(xiàn)。但如果你是恐龍那就用ListView或DataList等控件,絕對(duì)能讓你的技術(shù)發(fā)揮的淋漓盡致。微軟為了給這些人個(gè)臺(tái)階下,就又開(kāi)發(fā)出了DataPager控件。他好像只認(rèn)IPageableItemContainer接口。緊接著就又有了AspNetPager控件,這就給所有數(shù)據(jù)綁定控件又一個(gè)分頁(yè)的機(jī)會(huì)。不過(guò)AspNetPager與DataPager不同,AspNetPager只有分頁(yè)的UI部分,并不能單獨(dú)完在數(shù)據(jù)的分頁(yè)功能。其實(shí)大家一定會(huì)問(wèn),為什么我們不能做自己的分頁(yè)控件呢?這好像不是微軟的原則???哈哈,別誤會(huì)微軟。其實(shí)早就有這個(gè)方法了,只是少有人問(wèn)津。這就是PagedDataSource。他是沒(méi)有UI的,微軟所有分頁(yè)的控件都是擴(kuò)展于他的,包括最早的GridView。有了他,我們就可以隨心所欲的做自己的分頁(yè)控件了。如果把AspNetPager和PagedDataSource結(jié)合起來(lái)用,那就是如虎添翼。
再說(shuō)說(shuō)客戶端的分頁(yè)吧。在以前,客戶端做分頁(yè)無(wú)疑就是胖客戶端。把所有數(shù)據(jù)都存到頁(yè)面,用js控制顯示順序。少量數(shù)據(jù)還可以忍受,數(shù)據(jù)一多,那就是謀殺。不過(guò),自從AJAX的出現(xiàn),改變了這一現(xiàn)象。雖然也少不了的與服務(wù)器交互,但總比干等著強(qiáng)吧?這方面.net也表現(xiàn)不錯(cuò)。有了UpdatePanel,一切盡在不言中啊。
以上三個(gè)方向都可以很好的完成分頁(yè)功能,但誰(shuí)好誰(shuí)壞也不是我一個(gè)人就能決定的,還要看個(gè)人的喜好。不過(guò),有一人原則不能忽略,那就是“大道至簡(jiǎn),適可而止”。相信,每個(gè)人都有自己的一番體會(huì)的。
先說(shuō)說(shuō)從數(shù)據(jù)源入手的吧。一想到數(shù)據(jù)源做分頁(yè),自然是T-SQL了。什么存儲(chǔ)過(guò)程,視圖、特殊函數(shù)(當(dāng)然,這里指的只是我熟悉的MS)。能用到的SQL知識(shí)都往上砸。具體的實(shí)現(xiàn)就不說(shuō)了,忒Easy。代碼部分基本沒(méi)有什么,只要每次更改T-SQL語(yǔ)句就行了。不好的就是太受數(shù)據(jù)庫(kù)的限制,程序中一丁點(diǎn)的變化,所有有關(guān)SQL的地方都要變,有些甚至要改變數(shù)據(jù)庫(kù)的結(jié)構(gòu)。沒(méi)有扎實(shí)的數(shù)據(jù)庫(kù)知識(shí)是萬(wàn)萬(wàn)不行了。
服務(wù)器端做分頁(yè)可能是行家們最常用到的方法了。因?yàn)橛邪b好的數(shù)據(jù)綁定控件??!拿來(lái)就可以用。但是,那么說(shuō)微軟是大佬級(jí)人物呢,做個(gè)東西都深謀遠(yuǎn)慮。把菜鳥(niǎo)跟恐龍都考慮在內(nèi)。你如果是菜鳥(niǎo)就用GridView,內(nèi)置的分頁(yè)讓你幾乎不用寫(xiě)代碼就能實(shí)現(xiàn)。但如果你是恐龍那就用ListView或DataList等控件,絕對(duì)能讓你的技術(shù)發(fā)揮的淋漓盡致。微軟為了給這些人個(gè)臺(tái)階下,就又開(kāi)發(fā)出了DataPager控件。他好像只認(rèn)IPageableItemContainer接口。緊接著就又有了AspNetPager控件,這就給所有數(shù)據(jù)綁定控件又一個(gè)分頁(yè)的機(jī)會(huì)。不過(guò)AspNetPager與DataPager不同,AspNetPager只有分頁(yè)的UI部分,并不能單獨(dú)完在數(shù)據(jù)的分頁(yè)功能。其實(shí)大家一定會(huì)問(wèn),為什么我們不能做自己的分頁(yè)控件呢?這好像不是微軟的原則???哈哈,別誤會(huì)微軟。其實(shí)早就有這個(gè)方法了,只是少有人問(wèn)津。這就是PagedDataSource。他是沒(méi)有UI的,微軟所有分頁(yè)的控件都是擴(kuò)展于他的,包括最早的GridView。有了他,我們就可以隨心所欲的做自己的分頁(yè)控件了。如果把AspNetPager和PagedDataSource結(jié)合起來(lái)用,那就是如虎添翼。
再說(shuō)說(shuō)客戶端的分頁(yè)吧。在以前,客戶端做分頁(yè)無(wú)疑就是胖客戶端。把所有數(shù)據(jù)都存到頁(yè)面,用js控制顯示順序。少量數(shù)據(jù)還可以忍受,數(shù)據(jù)一多,那就是謀殺。不過(guò),自從AJAX的出現(xiàn),改變了這一現(xiàn)象。雖然也少不了的與服務(wù)器交互,但總比干等著強(qiáng)吧?這方面.net也表現(xiàn)不錯(cuò)。有了UpdatePanel,一切盡在不言中啊。
以上三個(gè)方向都可以很好的完成分頁(yè)功能,但誰(shuí)好誰(shuí)壞也不是我一個(gè)人就能決定的,還要看個(gè)人的喜好。不過(guò),有一人原則不能忽略,那就是“大道至簡(jiǎn),適可而止”。相信,每個(gè)人都有自己的一番體會(huì)的。
相關(guān)文章
ASP.NET?Core基于現(xiàn)有數(shù)據(jù)庫(kù)創(chuàng)建EF模型
這篇文章介紹了ASP.NET?Core基于現(xiàn)有數(shù)據(jù)庫(kù)創(chuàng)建EF模型的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04在VS2009中集成自動(dòng)上傳nuget包到服務(wù)器的解決方案
這篇文章主要介紹了在VS2009中集成自動(dòng)上傳nuget包到服務(wù)器的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06通過(guò)HttpClient 調(diào)用ASP.NET Web API示例
本篇文章主要介紹了通過(guò)HttpClient 調(diào)用ASP.NET Web API示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03asp.net下用Aspose.Words for .NET動(dòng)態(tài)生成word文檔中的數(shù)據(jù)表格的方法
導(dǎo)出word 文檔,要求這個(gè)文檔的格式不是固定的,用戶可以隨便的調(diào)整,導(dǎo)出內(nèi)容中的數(shù)據(jù)表格列是動(dòng)態(tài)的,例如要求導(dǎo)出姓名和性別,你就要導(dǎo)出這兩列的數(shù)據(jù),而且這個(gè)文檔不是導(dǎo)出來(lái)之后再調(diào)整而是導(dǎo)出來(lái)后已經(jīng)是調(diào)整過(guò)了的。2010-04-04ABP(現(xiàn)代ASP.NET樣板開(kāi)發(fā)框架)系列之二、ABP入門(mén)教程詳解
ABP是為新的現(xiàn)代Web應(yīng)用程序使用最佳實(shí)踐和使用最流行工具的一個(gè)起點(diǎn)??勺鳛橐话阌猛镜膽?yīng)用程序的基礎(chǔ)框架或項(xiàng)目模板。接下來(lái)通過(guò)本文給大家詳細(xì)介紹ABP入門(mén)教程,感興趣的朋友一起看看吧2017-10-10動(dòng)態(tài)代理的5模式使用示例和Mixin模式
什么叫"動(dòng)態(tài)代理",代理模式我們都知道,動(dòng)態(tài)代理就是動(dòng)態(tài)生成的代理(采用Emit)。5種代理模式:ClassProxy、ClassProxyWithTarget、InterfaceProxyWithoutTarget、InterfaceProxyWithTarget、InterfaceProxyWithTargetInterface、Mixin模式2013-11-11