成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET查詢分頁技術:實現Web數據分頁瀏覽

開發 后端
通過ASP.NET查詢分頁技術可將其按照一定規則分成多頁進行顯示,每頁顯示一定數目記錄。應用數據記錄分頁技術,可以提高數據的查詢性能及頁面的顯示速度,減輕數據庫服務器的負擔。

利用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
 關閉與數據庫的連接

連接字符串如下:

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

3.2 存儲過程的建立

  1. CREATE PROCEDURE PageCut     
  2.     
  3.     @PageSize int=10 , -- 頁面大小     
  4.     
  5.     @PageIndex int=1  --當前頁數     
  6.     
  7. AS    
  8.     
  9.     declare  @strSQL varchar(500)     
  10.     
  11.     if @PageIndex=1     
  12.     
  13.         set  @strSQL='select top'+str(@PageSize)+'* from tdbLevMess order by rqsj'    
  14.     
  15.     else      
  16.     
  17.         set  @strSQL='select top'+str(@PageSize)+'  * from tdbLevMess where rqsj not in    
  18.     
  19.         (select top  '+str((@PageIndex-1)*@PageSize)+'  rqsj from tdbpres)  order by rqsj'      
  20.     
  21.     exec(@strSQL)     
  22.     
  23. 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屬性(獲取或設置該參數的值)。

其實現程序如下:

  1. SqlCommand SCM=new SqlCommand();  //定義SqlCommand類     
  2.     
  3. SqlDataReader SDR;  //定義SqlDataReader類     
  4.     
  5. private void GridView_Init(int PageSize,int PageIndex)     
  6.     
  7. {     
  8.     
  9.     SCN.Open(); //打開數據庫連接     
  10.     
  11.     SCM.Connection = SCN;     
  12.     
  13.     SCM.CommandText = "pagecut"; //執行存儲過程     
  14.     
  15.     SCM.CommandType = CommandType.StoredProcedure;     
  16.     
  17.     SqlParameter[] pares ={ new SqlParameter("@PageSize",SqlDbType.Int),     
  18.     
  19.     new SqlParameter("@PageIndex",SqlDbType.Int)};     
  20.     
  21.     pares[0].Value = PageSize;     
  22.     
  23.     pares[1].Value = PageIndex;     
  24.     
  25.     SCM.Parameters.Clear(); //清空參數     
  26.     
  27.     foreach (SqlParameter parameter in pares)     
  28.     
  29.     {     
  30.     
  31.         SCM.Parameters.Add(parameter);     
  32.     
  33.     }     
  34.     
  35.     SDR = SCM.ExecuteReader(); //執行存儲過程     
  36.     
  37.     GridView1.DataSource = SDR;  //定義GridView的數據源     
  38.     
  39.     GridView1.DataBind(); // GridView數據源綁定     
  40.     
  41.     SCN.Close(); //關閉連接     
  42.     
  43. }   

3.4 程序的實現

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

  1. protected void Page_Load(object sender, EventArgs e)     
  2.     
  3.     {//頁面初始化     
  4.     
  5.         if (!IsPostBack)  //如果頁面不是***次加載     
  6.     
  7.         {     
  8.     
  9.             int PageCount,PageIndex,PageSize; //定義頁面總數、當前頁面號、每頁記錄數     
  10.     
  11.             SCN.Open();     
  12.     
  13.             SCM.CommandText = "select count(*) from tdbLevMess ";     
  14.     
  15.             SCM.Connection = SCN;     
  16.     
  17.             int ReCount = Convert.ToInt32(SCM.ExecuteScalar().ToString());//數據集記錄總數     
  18.     
  19.             SCN.Close();     
  20.     
  21.             Session.Add("PageSize", 20); //為共享變量每頁記錄數PageSize賦值     
  22.     
  23.             PageSize = Convert.ToInt16(Session["PageSize"]);//每頁記錄數為20     
  24.     
  25.             PageCount=ReCount % PageSize == 0? ReCount / PageSize: ReCount / PageSize + 1;//計算頁面的總頁數     
  26.     
  27.             Session.Add("PageCount", PageCount); //為共享變量總頁數PageCount賦值     
  28.     
  29.             PageIndex = 1;     
  30.     
  31.             Session.Add("PageIndex", PageIndex); //為共享變量總頁數PageIndex賦值     
  32.     
  33.             GridView_Init (PageSize, PageIndex); //調用過程為GridView填充數據     
  34.     
  35.             LinkButton1.Enabled = falseLinkButton2.Enabled = false;     
  36.     
  37.             LinkButton3.Enabled = true,LinkButton4.Enabled = true;     
  38.     
  39.             Label1.Text = "第"+PageIndex.ToString() + "頁/共" + PageCount.ToString() + "頁";     
  40.     
  41.         }     
  42.     
  43.     }     
  44.     
  45.   protected void LinkButton2_Click(object sender, EventArgs e)     
  46.     
  47.     {//上一頁按鈕     
  48.     
  49.         int PageIndex = Convert.ToInt16( Session["PageIndex"] )- 1;     
  50.     
  51.         int PageCount = Convert.ToInt16( Session["PageCount"]);     
  52.     
  53.         Session.Add("PageIndex", PageIndex);     
  54.     
  55.         int PageSize = Convert.ToInt16(Session["PageSize"]);     
  56.     
  57.         if (PageIndex <  = 1)     
  58.     
  59.         {     
  60.     
  61.             LinkButton1.Enabled = false;     
  62.     
  63.             LinkButton2.Enabled = false;     
  64.     
  65.         }     
  66.     
  67.         LinkButton3.Enabled = true;     
  68.     
  69.         LinkButton4.Enabled = true;     
  70.     
  71.         GridView_Init(PageSize, PageIndex);     
  72.     
  73.         Label1.Text = "第" + PageIndex.ToString() + "頁/共" + PageCount.ToString() + "頁";     
  74.     
  75.     }  

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

 4   結束語

ASP.NET查詢分頁技術是Web應用系統開發中經常遇到的重要工作,選擇一種高效的查詢分頁技術,不僅能大大提高響應速度,而且能提高整個系統性能,節約服務器寶貴資源。

【編輯推薦】

  1. 介紹ASP.NET頁面生命周期
  2. ASP.NET數據驗證技術研究詳解
  3. ASP.NET數據驗證中的驗證組淺析
  4. ASP.NET數據驗證控件使用淺析
  5. ASP.NET數據驗證五大常用控件淺析
責任編輯:周立方 來源: 唔愛吃蘋果
相關推薦

2010-03-19 09:17:16

ASP.NET MVC

2012-04-23 15:10:18

ASP.NET

2009-07-22 16:02:39

ASP.NET MVCPagedList

2009-07-28 14:47:18

ASP.NET MVC

2009-11-06 09:23:41

ASP.NET高效分頁

2009-09-10 09:50:47

ASP.NET MVC

2009-08-12 18:19:46

ASP.NET報表打印

2009-08-12 14:10:37

asp.net分頁代碼

2012-04-13 10:05:24

ASP.NET

2011-04-29 13:23:11

分頁數據存儲

2009-08-14 13:37:25

ASP.NET靜態頁面

2009-08-04 14:36:00

ASP.NET分頁管理

2009-08-14 13:20:29

ASP.NET Gri

2010-08-02 09:18:39

ASP.NET MVC

2010-01-26 13:15:42

ASP.NET MVC

2009-08-12 14:38:05

ASP.NET Dat

2015-08-19 14:18:56

SQLasp.net后臺調用

2012-09-25 09:31:58

ASP.NETC#Web

2009-07-30 11:39:04

ASP.NET新技術

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文字幕第一页 | 视频在线一区二区 | 国产激情视频在线免费观看 | 欧美成人一区二免费视频软件 | 精品精品| 欧美日本在线观看 | 久久99国产精品久久99果冻传媒 | 国产精品久久久久久久久久免费看 | 亚洲精品乱码久久久久久蜜桃 | 国产精品久久久久av | 美女视频一区二区三区 | 精品一区二区三区中文字幕 | 国产一区二区三区色淫影院 | 一级看片免费视频囗交动图 | 日韩综合在线 | 欧美日韩一| 欧美黄 片免费观看 | 久久专区 | 四虎永久免费黄色影片 | 欧美成人不卡 | 亚洲天堂一区二区 | 一区二区三区欧美 | 亚洲精品大片 | 久久国产精品久久久久 | 91亚洲免费 | 污免费网站 | 日本三级在线网站 | av在线播放网| 亚洲性视频网站 | 一区二区三区精品 | 97人澡人人添人人爽欧美 | 欧美区在线 | av一区二区三区 | 精品久久久久久中文字幕 | 激情五月激情综合网 | 欧美日韩大片 | 色婷婷综合在线观看 | 一区二区三区在线播放 | 成年人免费在线视频 | 成人妇女免费播放久久久 | 精品欧美黑人一区二区三区 |