程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 分頁解決方案之分頁算法——Pager_SQL的詳細使用方法和注意事項

分頁解決方案之分頁算法——Pager_SQL的詳細使用方法和注意事項

編輯:關於ASP.NET

上一次有點匆忙,如何使用介紹的不是太清楚,而且這兩天有改掉了幾個bug,所以這次呢詳細說一下,然後更新一下代碼和demo。

源代碼和demo的下載:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html

JYK.Controls.Pager.QuickPagerSQL PagerSQL = new QuickPagerSQL();

//設置保存屬性的位置。可以不保存,也可以保存在隱藏域、Cookie、Session等地方。默認保存在隱藏域裡面
//這裡設置為不保存
PagerSQL.SaveLocation = JYK.Common.SaveViewStateLocation.NoSave;

//設置密鑰。不保存忽略該屬性。八位的數字。空字符串表示不加密,null表示使用默認密鑰
//這裡不需要設置,也就是不加密
//PagerSQL.SaveKey = "12121212";

//設置屬性
PagerSQL.TableName = "News_NewsInfo"; //表名或者視圖名稱
PagerSQL.TableShowColumns = "*"; //需要顯示的字段
PagerSQL.TableIDColumn = "NewsID"; //主鍵名稱,不支持復合主鍵
PagerSQL.TableOrderByColumns = "NewsID"; //排序字段,根據分頁算法而定,可以支持多個排序字段
PagerSQL.TableQuery = ""; //查詢條件

PagerSQL.PageSize = 4; //一頁顯示的記錄數


//選擇分頁算法
PagerSQL.SetPagerSQLKind = PagerSQLKind.MaxMin;

//拼接分頁算法
PagerSQL.CreateSQL();

//獲取統計記錄數的SQL語句,比如 select count(1) from Table
string sql = PagerSQL.GetRecordCountSQL;

//設置總記錄數,您可以使用PagerSQL.GetRecordCountSQL返回的SQL語句到數據庫裡面查詢
//這裡就簡化操作,直接設置一個數值了。
PagerSQL.PageCount = 100;
//計算總頁數,防止傳入的頁號不在有效地范圍內,而產生無效的SQL語句。
PagerSQL.ComputePageCount();

//獲取SQL語句。如果想得到第三頁的SQL,那麼傳遞“3”就可以了。
//如果傳入的頁號大於總頁數,那麼會返回最後一頁的SQL語句。
//如果頁號小於1,會返回第一頁的SQL語句。
sql = PagerSQL.GetSQLByPageIndex(3) ;

FAQ:

1、為什麼要有一個保存位置的設置?

由於Pager_SQL是從QuickPager分頁控件裡面分離出來的,所以他的目的要能夠適應web控件的特點。如果您自己編寫過自定義控件的話,那麼您可能會遇到這樣的問題:明明我在Page_Load裡面給控件的屬性賦值了,但是在回發(提交表單)的時候卻提示我沒有給屬性賦值(屬性值為空)。這是為什麼呢?原因就在於在回發的時候Page_Load被延後執行了。

那麼要如何解決這個問題呢?一是在Oninit裡面賦值,一是在控件內部把屬性值保存在Viewstate裡面。而我這采用了後者。Viewstate裡面的東東誰然看起來亂七八糟的,但是很容易就可以把它變成能夠看懂的信息,那麼如果把表名、字段名這些敏感的信息放在Viewstate裡面顯然是不安全的,所以我就自己寫了一個類庫,可以把信息保存在隱藏域(當然也可以是Cookie、Session等)裡面,然後還可以設置密鑰,這樣沒有密鑰的話是不能破解的,除非暴力破解或者瞎蒙。

當然了現在Pager_SQL已經獨立出來了,有的時候是不需要保存的,或者您覺得保存在客戶端了即使加密也是不安全的,那麼您可以選擇不保存。

為了能夠滿足不同的需要,所以設置了這兩個屬性,一個是選擇保存信息的位置(當然可以不保存),另一個就是加密用的密鑰。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved