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

基于ASP.NET數(shù)據(jù)分頁導(dǎo)航的設(shè)計(jì)與應(yīng)用

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

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

關(guān)鍵詞:分頁技術(shù);用戶控件;APS.NET

中圖分類號(hào):TP391

文獻(xiàn)標(biāo)識(shí)碼:A

DOI:10.3969/j.issn.1003-6970.2015.12.013

本文著錄格式:袁芳基于ASP.NET數(shù)據(jù)分頁導(dǎo)航的設(shè)計(jì)與應(yīng)用[J]軟件,2015,36(12):60-62

1 引言

隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)與互聯(lián)網(wǎng)的發(fā)展與應(yīng)用,人們?cè)絹碓诫x不開網(wǎng)絡(luò),上網(wǎng)瀏覽新聞、網(wǎng)購、搜索信息、發(fā)帖子等活動(dòng)已成了我們生活的一部分,從而使得網(wǎng)站數(shù)據(jù)庫中的數(shù)據(jù)量呈現(xiàn)指數(shù)級(jí)增長(zhǎng)。如果服務(wù)器端把用戶請(qǐng)求的數(shù)據(jù)全部以一個(gè)頁面發(fā)給客戶端的話,由于數(shù)據(jù)量大,會(huì)增加頁面顯示時(shí)間和頁面的總長(zhǎng)度,這嚴(yán)重影響了用戶的體驗(yàn)。針對(duì)這些問題,可以利用數(shù)據(jù)的分頁技術(shù)來解決。利用ASP.NET技術(shù),本文詳細(xì)介紹了對(duì)網(wǎng)頁數(shù)據(jù)分頁的一些技術(shù),并結(jié)合數(shù)據(jù)綁定控件的特點(diǎn),設(shè)計(jì)分頁導(dǎo)航的用戶控件進(jìn)行數(shù)據(jù)分頁,從而提高網(wǎng)站開發(fā)效率。

2 內(nèi)置分頁功能的數(shù)據(jù)綁定控件

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

2.1 GridView控件分頁

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

2.2 ListView控件與DataPager控件結(jié)合分頁

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

3 分頁導(dǎo)航用戶控件的設(shè)計(jì)與實(shí)現(xiàn)

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

3.1 分頁導(dǎo)航用戶控件的界面設(shè)計(jì)

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

3.2 分頁導(dǎo)航用戶控件的后臺(tái)代碼

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

private void BindDatalnfo(int currentpage){

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

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;//每頁顯示數(shù)據(jù)條數(shù)

pds.CurrentPagelndex=currentpage;//currentpage為BindDatalnfo方法的參數(shù)值

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

SqIDataAdapter sda=new SqIDataAdapter(sql,conn):

DataSet ds=new DataSet():

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

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

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

//當(dāng)前頁為首頁時(shí),設(shè)置“首頁”、“上一頁”按鈕無效

if(pds.IsFirstPage){

lbtnFirst.Enabled=false;

lbtnPre.Enabled=false;}else{

lbtnFirst.Enabled=true;

lbtnPre.Enabled=true;}

//當(dāng)前頁為末頁時(shí),設(shè)置“末頁”、“下一頁”按鈕無效

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;//下拉列表控件顯示當(dāng)前頁碼

//判斷頁面數(shù)據(jù)綁定控件的類型,進(jìn)行相應(yīng)的數(shù)據(jù)綁定

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();}//關(guān)閉數(shù)據(jù)庫連接

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

3.3 分頁導(dǎo)航用戶控件的應(yīng)用

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

在GridView控件的頁面Page_Load事件代碼中,設(shè)置分頁導(dǎo)航控件的屬性值,添加如下代碼,運(yùn)行效果如圖2所示

UserDataPagerControII.DataBindControIID=Gri dViewl:

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

UserDataPagerControll.PageNum=6;

在DataList控件的頁面Page_Load事件代碼中,設(shè)置分頁導(dǎo)航控件的屬性值,添加如下代碼.運(yùn)行效果如圖3所示。

UserDataPagerControll.DataBindControllD=Dat aListl:

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

UserDataPagerControll.PageNum=2;

4 總結(jié)

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

主站蜘蛛池模板: 国产激情国语对白普通话| 日本久久网站| 丁香五月亚洲综合在线 | 亚洲中文字幕av无码区| 九九热视频在线免费观看| 成人在线观看一区| 这里只有精品国产| 免费观看男人免费桶女人视频| 亚洲毛片在线看| 欧美日韩一区二区在线播放| 免费高清自慰一区二区三区| 欧美国产日韩另类| 亚洲成人免费在线| 国产男女免费完整版视频| 亚洲热线99精品视频| 2021最新国产精品网站| 精品欧美一区二区三区久久久| 中文字幕免费在线视频| 亚洲中文字幕在线精品一区| 东京热一区二区三区无码视频| 国产精品林美惠子在线观看| 国产第四页| 亚洲中文字幕久久精品无码一区| 日韩专区欧美| 五月天福利视频| 国产乱子伦视频在线播放| 国产精品页| 高清无码手机在线观看 | 四虎国产永久在线观看| 国产SUV精品一区二区6| 色AV色 综合网站| 原味小视频在线www国产| 色噜噜在线观看| 99在线观看免费视频| 欧美亚洲第一页| 夜夜爽免费视频| 国产区在线看| 国产成人高清亚洲一区久久| 丰满人妻久久中文字幕| 国产女人18水真多毛片18精品 | www.国产福利| 国产成人精品午夜视频'| 九九久久精品免费观看| 妇女自拍偷自拍亚洲精品| 老司国产精品视频91| 538国产在线| 国产老女人精品免费视频| 亚洲人成影视在线观看| 国产高清无码第一十页在线观看| A级毛片无码久久精品免费| 99成人在线观看| 青青热久免费精品视频6| 久久国产精品77777| 亚洲浓毛av| 亚洲综合亚洲国产尤物| 久久一本精品久久久ー99| 国产免费高清无需播放器| 中日无码在线观看| 久久黄色影院| 国产99热| 久久青青草原亚洲av无码| 在线一级毛片| 日本久久久久久免费网络| 91口爆吞精国产对白第三集| 91麻豆精品视频| 国产日韩欧美精品区性色| 国产午夜精品鲁丝片| 亚洲AV无码久久天堂| 2021国产v亚洲v天堂无码| 日韩激情成人| 欧美午夜视频在线| 精品久久人人爽人人玩人人妻| 亚洲高清中文字幕在线看不卡| 中文字幕亚洲另类天堂| 九九九九热精品视频| 国产日本视频91| 色综合中文字幕| 人妻一本久道久久综合久久鬼色| 国产午夜人做人免费视频中文| 又黄又爽视频好爽视频| www亚洲天堂| 国产免费怡红院视频|