999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ASP.NET數據分頁導航的設計與應用

2016-01-24 11:44:51袁芳
軟件 2015年12期

摘要:在ASP.NET動態網站開發過程中,數據分頁是經常使用的一種技術,但DataList和Rep eater控件沒有內置分頁功能,需要編寫分頁代碼,而這些分頁代碼大致相同。本文針對GridView、DataList和Repeater數據綁定控件,設計了分頁導航用戶控件,從而解決了網頁開發過程中大量分頁代碼重復的問題,提高網站開發效率。

關鍵詞:分頁技術;用戶控件;APS.NET

中圖分類號:TP391

文獻標識碼:A

DOI:10.3969/j.issn.1003-6970.2015.12.013

本文著錄格式:袁芳基于ASP.NET數據分頁導航的設計與應用[J]軟件,2015,36(12):60-62

1 引言

隨著計算機網絡技術與互聯網的發展與應用,人們越來越離不開網絡,上網瀏覽新聞、網購、搜索信息、發帖子等活動已成了我們生活的一部分,從而使得網站數據庫中的數據量呈現指數級增長。如果服務器端把用戶請求的數據全部以一個頁面發給客戶端的話,由于數據量大,會增加頁面顯示時間和頁面的總長度,這嚴重影響了用戶的體驗。針對這些問題,可以利用數據的分頁技術來解決。利用ASP.NET技術,本文詳細介紹了對網頁數據分頁的一些技術,并結合數據綁定控件的特點,設計分頁導航的用戶控件進行數據分頁,從而提高網站開發效率。

2 內置分頁功能的數據綁定控件

網頁中數據訪問的許多功能是由數據綁定控件來完成,ASP.NET有豐富的數據綁定控件,這是廣大網站開發人員樂于使用ASP.NET進行網站開發的一個重要原因。ASP.NET3.5中提供了GridView、DataList、Reapeater、ListView等數據綁定控件,其中具有內置分頁功能的有GridView控件、ListView控件和DetailsView控件,由于DetailsView控件每頁只顯示一條記錄信息,本文就不做介紹。

2.1 GridView控件分頁

GridView控件是以表格的形式顯示數據源的數據。它有內置分頁的功能,即該控件可以在不編寫任何代碼,僅僅設置相關屬性情況下,就可以實現數據綁定和分頁等功能。GridView控件要實現分頁功能只需設置AllowPaging屬性值為True,如果要指定每頁顯示的記錄數,可以設置PageSize屬性,默認該屬性值為10條,分頁效果可以在屬性集合PagerSettings中進行設置。使用GridView內置分頁功能實現數據分頁,操作簡單,降低了網站開發難度,提高了開發效率,但需一次性將數據表中滿足條件的所有記錄讀入到內存,大大占用服務器資源,降低了服務器性能。所以這種分頁方式適合數據量比較少的情況使用,當數據量成千上萬時,就要編程分頁,可以使用緩存技術、存儲過程白定義分頁等技術。

2.2 ListView控件與DataPager控件結合分頁

從ASP.NET3.5開始,提供了全新的ListView控件和DataPager控件,結合使用這兩個控件就可以實現分頁顯示數據的功能。ListView控件用于顯示數據,功能非常強大,它提供了編輯、刪除、插入、分頁與排序等數據操作功能和強大的顯示布局功能,同GridView控件類似,與GridView控件不同之處在于比GridView控件多了插入功能和使用用戶定義的模板而不是行字段來顯示數據。ListView控件的分頁功能是通過DataPager控件來實現的。DataPager控件的PagedCountID屬性值為ListView控件的ID值。DataPager控件擺放的位置可以是內嵌在ListView控件的標簽內,也可以是獨立于ListView控。但這種分頁樣式是就兩種,不夠靈活。

3 分頁導航用戶控件的設計與實現

在網站開發過程中,對GridView、DataList和Repeater數據綁定控件使用的比較頻繁。當數據量很多時,就需要對數據進行分頁,GridView控件白帶了分頁功能,但分頁樣式卻差強人意。而DataList和Repeater控件在布局上可以靈活多變,但他們沒有分頁功能,只能由開發者編寫大量代碼手動開發,涉及分頁數據的頁面都要編寫分頁代碼,而這些分頁代碼大致是相同的,這會導致程序代碼重用率低,可維護性差和開發速度慢等問題。為了解決這些問題,本文設計和開發一個為這3個數據綁定控件都能使用的分頁導航用戶控件。

3.1 分頁導航用戶控件的界面設計

向網站項目中添加一個用戶控件,將它命名為UserDataPagerControl.ascx,用于數據分頁導航,在文件中添加7個控件,Label控件用于顯示當前是第幾頁、共多少頁,共多少條記錄,4個LinkButton控件用于翻頁,定位到首頁、上一頁、下一頁和末頁,DropDownList控件顯示共多少頁碼的列表,Button控件“跳轉”用于直接定位到DropDownList所選的頁,設計如圖l所示。

3.2 分頁導航用戶控件的后臺代碼

首先為分頁導航控件創建幾個屬性,通過這些屬性可以設置數據所需的參數,DataBindControIID屬性是存放分頁頁面中數據綁定控件的ID信息,PageNum屬性為每頁顯示數據的條數,DataSQL屬性為查詢數據表的sql語句,在全局的地方創建一個靜態PageDataS ource分頁數據源的對象pds,白定義一個BindDatalnfo方法,該方法是用來從數據庫中查詢_LH符合指定條件的記錄,并將數據信息綁定到數據綁定控件中,其參數為當前頁的索引值。在Page_Load事件中,第一次運行時,顯示第一頁,頁面索引值為0,調用該方法,即if(!IsPostBack){BindDatalnfo(0);},BindDatalnfo方法的代碼如下所示。

private void BindDatalnfo(int currentpage){

string controltype=dataBindControIID.GetType().ToString();//controltype為數據綁定控件的類型

controltype=controltype.Substring(controltype.LastlndexOf(“.”)+l,controltype.Length-l-cont roltype.LastlndexOf(“.”));

SqIConnection conn=new SqIConnection(Conf igurationManager.ConnectionStrings connD ataBase”].C onnectionString);

pds.AllowPaging=true;//允許分頁

pds.PageSize=pageNum;//每頁顯示數據條數

pds.CurrentPagelndex=currentpage;//currentpage為BindDatalnfo方法的參數值

conn.Open();//打開數據庫連接

SqIDataAdapter sda=new SqIDataAdapter(sql,conn):

DataSet ds=new DataSet():

sda.Fill(ds);//手巴執行得到的數據放在數據集中

pds.DataSource=ds.Tables[O].DefaultView;//把數據集中的數據放人分頁數據源中

LabCount.Text=“第”+(pds.CurrentPagelndex+l)+“頁共”+pds.PageCount+“頁共”+pds.DataSourceCount+“條記錄”;

//當前頁為首頁時,設置“首頁”、“上一頁”按鈕無效

if(pds.IsFirstPage){

lbtnFirst.Enabled=false;

lbtnPre.Enabled=false;}else{

lbtnFirst.Enabled=true;

lbtnPre.Enabled=true;}

//當前頁為末頁時,設置“末頁”、“下一頁”按鈕無效

if(pds.IsLastPage){

lbtnNext.Enabled=false:

lbtnLast.Enabled=false;}else{

lbtnNext.Enabled=true:

lbtnLast.Enabled=true;{

//給下拉列表控件添加頁碼值列表

if(!IsPostBack){

for(int i=1;i<=pds.PageCount;i++){

ddIPages.Items.Add(i.ToString());}}

ddIPages.Selectedlndex=pds.CurrentPagelndex;//下拉列表控件顯示當前頁碼

//判斷頁面數據綁定控件的類型,進行相應的數據綁定

if(controltype==“GridView”){

((GridView)(dataBindControIID)).DataSource=pds;

((GridView)(dataBindControIID)).DataBind();}

else if(controltype==“DataList”){

((DataList)(dataBindControIID)).DataSource=pds;

((DataList)(dataBindControIID)).DataBind();}

else{

((Repeater)(dataBindControIID)).DataSource=pds;

((Repeater)(dataBindControIID)).DataBind();}

conn.Close();}//關閉數據庫連接

在頁面定位時,主要設計首頁、上一頁、下一頁、末頁和跳轉按鈕的單擊事件代碼的編寫,這些按鈕的代碼如下所述。在這5個按鈕的單擊事件中都定義一個整形int類型的局部變量pagelndex,“首頁”按鈕單擊事件代碼中對pagelndex變量賦“0”值;“上一頁”單擊事件代碼中對pagelndex值為“pds.CurrentPagelndex-1”,“下一頁”單擊事件代碼中對pagelndex值為“pds.CurrentPagelndex+1”;“末頁”單擊事件代碼中對pagelndex值為“pds.PageCount-1”,跳轉按鈕的單擊事件代碼中pagelndex值為“Convert.ToInt32(ddIPages.Selectedltem.Text)-l”,這5個按鈕單擊事件代碼最后都寫上調用白定義方法BindDatalnfo,代碼為“BindDatalnfo(pagelndex)”就可以完成翻頁和頁面的定位。

3.3 分頁導航用戶控件的應用

當分頁導航用戶白定義控件做好后,就可以像ASP.NET工具箱里控件一樣把UserDataPagerControl用戶控件拖到.aspx頁面中,下面以GridView和DataList數據綁定控件為類,可以輕松的完成數據分頁,在頁面開發過程中可以重復使用UserDataPagerControl用戶控件,從而大大提高開發的效率。

在GridView控件的頁面Page_Load事件代碼中,設置分頁導航控件的屬性值,添加如下代碼,運行效果如圖2所示

UserDataPagerControII.DataBindControIID=Gri dViewl:

UserDataPagerControII.DataSQL="select ID,Ti tle,Style,Type from tbNews";

UserDataPagerControll.PageNum=6;

在DataList控件的頁面Page_Load事件代碼中,設置分頁導航控件的屬性值,添加如下代碼.運行效果如圖3所示。

UserDataPagerControll.DataBindControllD=Dat aListl:

UserDataPagerControll.DataSQL="select Book Name.BookAuthor.BookPrice.Booklinage from tbBooks":

UserDataPagerControll.PageNum=2;

4 總結

在Web應用程序開發中,數據分頁是經常使用的一種技術,也是提高數據訪問性能和用戶體驗的一主要手段。在動態網頁開發過程中,對GridView、Da taList和Repeater數據綁定控件使用頻率比較高,本文自定義了分頁導航用戶控件,該控件可以像工具箱里其它內置控件一樣任意使用,適合對GridView、Da taList和Repeater數據綁定控件的數據進行分頁,從而解決了動態網站開發過程中大量分頁代碼重復問題,提高了代碼的重用率、網站的開發效率和系統的可維護性。

主站蜘蛛池模板: 亚洲成AV人手机在线观看网站| 日本欧美在线观看| 国产免费观看av大片的网站| 无码一区中文字幕| 国产欧美日韩专区发布| 日本一区二区三区精品视频| 九九热在线视频| 99re在线观看视频| 一级一毛片a级毛片| 日韩精品免费在线视频| 国产69精品久久| 国产成人综合亚洲欧美在| 色播五月婷婷| 在线免费亚洲无码视频| 最新国产在线| 综合网久久| 午夜成人在线视频| 亚洲一区二区精品无码久久久| 欧美午夜网站| 97久久精品人人| 久久精品视频亚洲| Jizz国产色系免费| 久久这里只有精品2| 在线欧美日韩国产| 久久亚洲美女精品国产精品| 3D动漫精品啪啪一区二区下载| 18禁色诱爆乳网站| 国产91小视频在线观看| 久久婷婷色综合老司机| 91美女视频在线| a欧美在线| 国产波多野结衣中文在线播放 | 国产va欧美va在线观看| 99热最新网址| 欧美午夜视频在线| 亚洲无线国产观看| 在线国产欧美| 国产老女人精品免费视频| 日韩无码视频播放| 伊人激情综合| v天堂中文在线| 亚洲码在线中文在线观看| 又黄又爽视频好爽视频| 国产第四页| 日本一区二区不卡视频| 国产网站免费| 国产一区三区二区中文在线| 日本a级免费| 精品偷拍一区二区| h网址在线观看| 国产在线自乱拍播放| 欧美精品高清| 久热re国产手机在线观看| 国产系列在线| 国产成人免费| 国产亚洲精品无码专| 国产一二三区在线| 国产精品第一区在线观看| 亚洲精品无码久久久久苍井空| 一级不卡毛片| a级高清毛片| 欧美成人精品一区二区| 国产精品自在线天天看片| 国产69囗曝护士吞精在线视频| 亚洲aaa视频| 日本高清免费一本在线观看 | 中文字幕亚洲另类天堂| 亚洲欧洲免费视频| 亚洲三级视频在线观看| 国产成人精品免费av| 欧美日本在线| 国产精品美女免费视频大全| 久久这里只有精品2| 国产精品尤物铁牛tv| 色婷婷狠狠干| Jizz国产色系免费| 成人在线视频一区| 亚洲无码视频图片| 国产SUV精品一区二区6| 精品一区二区三区自慰喷水| 99ri精品视频在线观看播放| 亚洲综合九九|