ASP.NET如何實現(xiàn)Web數(shù)據(jù)分頁瀏覽

這篇文章主要介紹了ASP.NET如何實現(xiàn)Web數(shù)據(jù)分頁瀏覽,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比慈溪網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式慈溪網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋慈溪地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

利用ASP.NET開發(fā)Web數(shù)據(jù)庫的查詢功能模塊時,為了減少網(wǎng)絡流量,提高頁面的訪問速度,一般不會將所有的查詢結果完全在一頁中顯示出來,而是將其按照一定規(guī)則分成多頁進行顯示,每頁顯示一定數(shù)目記錄。應用數(shù)據(jù)記錄分頁技術,可以提高數(shù)據(jù)的查詢性能及頁面的顯示速度,減輕數(shù)據(jù)庫服務器的負擔。


1 ASP.NET查詢分頁技術概述
對Web數(shù)據(jù)庫查詢結果進行分頁顯示主要有兩種實現(xiàn)方式,分別是瀏覽器端分頁和服務器端分頁。瀏覽器端分頁是先將數(shù)據(jù)庫中所有滿足查詢條件的記錄一次性保存下來,然后通過設置每頁要顯示的記錄數(shù),再確定要顯示記錄的起點和終點來實現(xiàn)分頁顯示。服務器端分頁是根據(jù)用戶的請求,每次分別從滿足查詢條件的記錄中將規(guī)定數(shù)目的記錄數(shù)作讀取并顯示出來。
為此,我們采用服務器端分頁的方式。在瀏覽器端進行分頁時,為了減少網(wǎng)絡的流量,我們采用SQL Server的存儲過程進行分頁。


2  主要技術
ADO.NET類
在Web應用系統(tǒng)中,ASP.NET使用ADO.NET將系統(tǒng)前端的Web瀏覽器和后臺的數(shù)據(jù)庫之間聯(lián)系起來。ADO.NET是.NET Framework提供的一系列類,提供了對關系數(shù)據(jù)、XML和應用程序數(shù)據(jù)的訪問。

3  ASP.NET查詢分頁技術的實現(xiàn)
 在此,我們使用System.data.SqlClient(包含訪問SQL Server數(shù)據(jù)庫的類)對MS SQL Server2000進行操作,使用ASP.NET中的C#語言進行描述。以筆者開發(fā)的“在線考試系統(tǒng)”中的“查看學生留言信息模塊”為例來說明該項技術的開發(fā)過程。

3.1連接數(shù)據(jù)庫
要訪問數(shù)據(jù),必須首先連接數(shù)據(jù)庫,在此我們利用System.data.SqlClient.SqlConnection類來連接SQL Server中Student的數(shù)據(jù)庫。用到主要屬性和方法如下:

ConnectionString
獲取或設置用于打開SQL Server數(shù)據(jù)庫的字符串

Open
使用ConnectionString所指定的屬性設置打開數(shù)據(jù)庫連接

Close
關閉與數(shù)據(jù)庫的連接

連接字符串如下:

SqlConnection SCN = new SqlConnection("server=;database=BSNetExam;uid=sa;pwd=");

3.2 存儲過程的建立

CREATE PROCEDURE PageCut             @PageSize int=10 , -- 頁面大小             @PageIndex int=1  --當前頁數(shù)         AS            declare  @strSQL varchar(500)             if @PageIndex=1                 set  @strSQL='select top'+str(@PageSize)+'* from tdbLevMess order by rqsj'            else                  set  @strSQL='select top'+str(@PageSize)+'  * from tdbLevMess where rqsj not in                (select top  '+str((@PageIndex-1)*@PageSize)+'  rqsj from tdbpres)  order by rqsj'              exec(@strSQL)         GO

3.3操作數(shù)據(jù)庫

查詢數(shù)據(jù)操作可以通過多種方式來實現(xiàn),常用的對象包括SqlCommand對象(表示一個SQL查詢或者一個存儲過程)和SqlDataAdpater對象(把一個SqlCommand提交給SQL Server數(shù)據(jù)庫)。在此,我們使用SqlCommand對象來操作數(shù)據(jù)庫。

SqlCommand類位于System.Data.SqlClient空間中,表示要對SQL Server數(shù)據(jù)庫執(zhí)行的一個Transact-SQL語句或存儲過程。本例中用到的屬性和方法如下:


CommandText
獲取或設置要對數(shù)據(jù)源執(zhí)行的 Transact-SQL 語句或存儲過程。

CommandType
獲取或設置一個值,該值指示如何解釋 CommandText 屬性。

Connection
獲取或設置 SqlCommand 的此實例使用的 SqlConnection。

Parameters
獲取 SqlParameterCollection。

ExecuteReader
將 CommandText 發(fā)送到 Connection 并生成一個 SqlDataReader。

SqlParameter類位于System.Data.SqlClient空間中,表示 SqlCommand 的參數(shù),也可以是它到 DataSet 列的映射。本例中用到的Value屬性(獲取或設置該參數(shù)的值)。

其實現(xiàn)程序如下:

SqlCommand SCM=new SqlCommand();  //定義SqlCommand類         SqlDataReader SDR;  //定義SqlDataReader類         private void GridView_Init(int PageSize,int PageIndex)         {             SCN.Open(); //打開數(shù)據(jù)庫連接             SCM.Connection = SCN;             SCM.CommandText = "pagecut"; //執(zhí)行存儲過程             SCM.CommandType = CommandType.StoredProcedure;             SqlParameter[] pares ={ new SqlParameter("@PageSize",SqlDbType.Int),             new SqlParameter("@PageIndex",SqlDbType.Int)};             pares[0].Value = PageSize;             pares[1].Value = PageIndex;             SCM.Parameters.Clear(); //清空參數(shù)             foreach (SqlParameter parameter in pares)             {                 SCM.Parameters.Add(parameter);             }             SDR = SCM.ExecuteReader(); //執(zhí)行存儲過程             GridView1.DataSource = SDR;  //定義GridView的數(shù)據(jù)源             GridView1.DataBind(); // GridView數(shù)據(jù)源綁定             SCN.Close(); //關閉連接         }

3.4 程序的實現(xiàn)

在Web窗體上,添加一個GridView控件(用于數(shù)據(jù)的顯示),四個LinkButton(用作超級鏈接,分別為首頁、上一頁、下一頁、末頁),一個Label控件。將GridView控件的AllowPaging(是否在GridView中打開分頁功能)屬性設置為False。我們利用Session對象保存分頁程序中的參數(shù)。具體程序如下:

protected void Page_Load(object sender, EventArgs e)             {//頁面初始化                 if (!IsPostBack)  //如果頁面不是***次加載                 {                     int PageCount,PageIndex,PageSize; //定義頁面總數(shù)、當前頁面號、每頁記錄數(shù)                     SCN.Open();                     SCM.CommandText = "select count(*) from tdbLevMess ";                     SCM.Connection = SCN;                     int ReCount = Convert.ToInt32(SCM.ExecuteScalar().ToString());//數(shù)據(jù)集記錄總數(shù)                     SCN.Close();                     Session.Add("PageSize", 20); //為共享變量每頁記錄數(shù)PageSize賦值                     PageSize = Convert.ToInt16(Session["PageSize"]);//每頁記錄數(shù)為20                     PageCount=ReCount % PageSize == 0? ReCount / PageSize: ReCount / PageSize + 1;//計算頁面的總頁數(shù)                     Session.Add("PageCount", PageCount); //為共享變量總頁數(shù)PageCount賦值                     PageIndex = 1;                     Session.Add("PageIndex", PageIndex); //為共享變量總頁數(shù)PageIndex賦值                     GridView_Init (PageSize, PageIndex); //調用過程為GridView填充數(shù)據(jù)                     LinkButton1.Enabled = false, LinkButton2.Enabled = false;                     LinkButton3.Enabled = true,LinkButton4.Enabled = true;                     Label1.Text = "第"+PageIndex.ToString() + "頁/共" + PageCount.ToString() + "頁";                 }             }           protected void LinkButton2_Click(object sender, EventArgs e)             {//上一頁按鈕                 int PageIndex = Convert.ToInt16( Session["PageIndex"] )- 1;                 int PageCount = Convert.ToInt16( Session["PageCount"]);                 Session.Add("PageIndex", PageIndex);                 int PageSize = Convert.ToInt16(Session["PageSize"]);                 if (PageIndex <  = 1)                 {                     LinkButton1.Enabled = false;                     LinkButton2.Enabled = false;                 }                 LinkButton3.Enabled = true;                 LinkButton4.Enabled = true;                 GridView_Init(PageSize, PageIndex);                 Label1.Text = "第" + PageIndex.ToString() + "頁/共" + PageCount.ToString() + "頁";             }

我們只給出了LinkButton2的代碼(實現(xiàn)向上翻頁),其它超級鏈接代碼跟此相類似。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“ASP.NET如何實現(xiàn)Web數(shù)據(jù)分頁瀏覽”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!

分享文章:ASP.NET如何實現(xiàn)Web數(shù)據(jù)分頁瀏覽
本文URL:http://muchs.cn/article0/jooioo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、建站公司網(wǎng)站營銷網(wǎng)站設計公司、營銷型網(wǎng)站建設軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作