您好,登錄后才能下訂單哦!
這篇文章主要介紹了ASP.NET如何實現Web數據分頁瀏覽,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
利用ASP.NET開發Web數據庫的查詢功能模塊時,為了減少網絡流量,提高頁面的訪問速度,一般不會將所有的查詢結果完全在一頁中顯示出來,而是將其按照一定規則分成多頁進行顯示,每頁顯示一定數目記錄。應用數據記錄分頁技術,可以提高數據的查詢性能及頁面的顯示速度,減輕數據庫服務器的負擔。
1 ASP.NET查詢分頁技術概述
對Web數據庫查詢結果進行分頁顯示主要有兩種實現方式,分別是瀏覽器端分頁和服務器端分頁。瀏覽器端分頁是先將數據庫中所有滿足查詢條件的記錄一次性保存下來,然后通過設置每頁要顯示的記錄數,再確定要顯示記錄的起點和終點來實現分頁顯示。服務器端分頁是根據用戶的請求,每次分別從滿足查詢條件的記錄中將規定數目的記錄數作讀取并顯示出來。
為此,我們采用服務器端分頁的方式。在瀏覽器端進行分頁時,為了減少網絡的流量,我們采用SQL Server的存儲過程進行分頁。
2 主要技術
ADO.NET類
在Web應用系統中,ASP.NET使用ADO.NET將系統前端的Web瀏覽器和后臺的數據庫之間聯系起來。ADO.NET是.NET Framework提供的一系列類,提供了對關系數據、XML和應用程序數據的訪問。
3 ASP.NET查詢分頁技術的實現
在此,我們使用System.data.SqlClient(包含訪問SQL Server數據庫的類)對MS SQL Server2000進行操作,使用ASP.NET中的C#語言進行描述。以筆者開發的“在線考試系統”中的“查看學生留言信息模塊”為例來說明該項技術的開發過程。
3.1連接數據庫
要訪問數據,必須首先連接數據庫,在此我們利用System.data.SqlClient.SqlConnection類來連接SQL Server中Student的數據庫。用到主要屬性和方法如下:
ConnectionString
獲取或設置用于打開SQL Server數據庫的字符串
Open
使用ConnectionString所指定的屬性設置打開數據庫連接
Close
關閉與數據庫的連接
連接字符串如下:
SqlConnection SCN = new SqlConnection("server=;database=BSNetExam;uid=sa;pwd=");
3.2 存儲過程的建立
CREATE PROCEDURE PageCut @PageSize int=10 , -- 頁面大小 @PageIndex int=1 --當前頁數 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操作數據庫
查詢數據操作可以通過多種方式來實現,常用的對象包括SqlCommand對象(表示一個SQL查詢或者一個存儲過程)和SqlDataAdpater對象(把一個SqlCommand提交給SQL Server數據庫)。在此,我們使用SqlCommand對象來操作數據庫。
SqlCommand類位于System.Data.SqlClient空間中,表示要對SQL Server數據庫執行的一個Transact-SQL語句或存儲過程。本例中用到的屬性和方法如下:
CommandText
獲取或設置要對數據源執行的 Transact-SQL 語句或存儲過程。
CommandType
獲取或設置一個值,該值指示如何解釋 CommandText 屬性。
Connection
獲取或設置 SqlCommand 的此實例使用的 SqlConnection。
Parameters
獲取 SqlParameterCollection。
ExecuteReader
將 CommandText 發送到 Connection 并生成一個 SqlDataReader。
SqlParameter類位于System.Data.SqlClient空間中,表示 SqlCommand 的參數,也可以是它到 DataSet 列的映射。本例中用到的Value屬性(獲取或設置該參數的值)。
其實現程序如下:
SqlCommand SCM=new SqlCommand(); //定義SqlCommand類 SqlDataReader SDR; //定義SqlDataReader類 private void GridView_Init(int PageSize,int PageIndex) { SCN.Open(); //打開數據庫連接 SCM.Connection = SCN; SCM.CommandText = "pagecut"; //執行存儲過程 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(); //清空參數 foreach (SqlParameter parameter in pares) { SCM.Parameters.Add(parameter); } SDR = SCM.ExecuteReader(); //執行存儲過程 GridView1.DataSource = SDR; //定義GridView的數據源 GridView1.DataBind(); // GridView數據源綁定 SCN.Close(); //關閉連接 }
3.4 程序的實現
在Web窗體上,添加一個GridView控件(用于數據的顯示),四個LinkButton(用作超級鏈接,分別為首頁、上一頁、下一頁、末頁),一個Label控件。將GridView控件的AllowPaging(是否在GridView中打開分頁功能)屬性設置為False。我們利用Session對象保存分頁程序中的參數。具體程序如下:
protected void Page_Load(object sender, EventArgs e) {//頁面初始化 if (!IsPostBack) //如果頁面不是***次加載 { int PageCount,PageIndex,PageSize; //定義頁面總數、當前頁面號、每頁記錄數 SCN.Open(); SCM.CommandText = "select count(*) from tdbLevMess "; SCM.Connection = SCN; int ReCount = Convert.ToInt32(SCM.ExecuteScalar().ToString());//數據集記錄總數 SCN.Close(); Session.Add("PageSize", 20); //為共享變量每頁記錄數PageSize賦值 PageSize = Convert.ToInt16(Session["PageSize"]);//每頁記錄數為20 PageCount=ReCount % PageSize == 0? ReCount / PageSize: ReCount / PageSize + 1;//計算頁面的總頁數 Session.Add("PageCount", PageCount); //為共享變量總頁數PageCount賦值 PageIndex = 1; Session.Add("PageIndex", PageIndex); //為共享變量總頁數PageIndex賦值 GridView_Init (PageSize, PageIndex); //調用過程為GridView填充數據 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的代碼(實現向上翻頁),其它超級鏈接代碼跟此相類似。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“ASP.NET如何實現Web數據分頁瀏覽”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。