分頁控件的源代碼,可能會讓有些人失望,因為代碼很亂。亂的一個原因呢,可能是沒有采用OO的思路吧,因為寫控件的時候還一點都不會OO呢,隻是一直在用,也就沒有作大的重構。
有兩個分頁控件,
一個是通過PostBack來分頁的,一個是通過URL來分頁的。
先說PostBack的吧。
推薦使用環境,背景管理、OA等。
優點呢就是可以利用ViewState來儲存很多資訊,比如總記錄數、查詢語句、查詢條件、等等,可以提高一些效率。
URL的。
這個是後完成的,代碼能稍微好一點,由于不能使用ViewState,是以好多地方都比較别扭。
恩,還是有點亂,還是說一下使用方法吧。
分頁控件自帶了兩種分頁算法。為什麼要有兩種分頁算法呢?因為分頁的要求是不一樣的呀。
1、一個排序字段,且排序字段沒有重複值。
2、多個排序字段,且最後一個排序字段沒有重複值。
3、一個排序字段,且排序字段有重複值。
4、多個排序字段,且最後一個排序字段有重複值。
對于3和4,大多數情況都可以通過增加一個排序字段(比如自鍵)的方式變成第2種。
第一種情況比較簡單了。
對于第一種情況,分頁控件設定起來也很簡單。
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置使用者代碼以初始化頁面
Response.Cache.SetNoStore();
Page1.PubShowDataObject = DG; //設定顯示資料的控件,還可以是DataList、Repeater 等。
if (!Page.IsPostBack)
SetPageInfo();
}
}
private void SetPageInfo()
Page1.SqlTableNames = TableName; //表名或者視圖名
Page1.SqlColumns = "*"; //顯示的字段
Page1.SqlOrderColumn = "col2"; //排序字段
Page1.SqlOrderColumnKind = "string"; //排序字段的類型
Page1.SqlPageSize = 10; //一頁的記錄數
Page1.IsOrderDesc = true; //是否倒序
Page1.CreateQuery() ; //建立SQL語句
Page1.BindFirstPage(); //綁定第一頁的資料
主要就是設定屬性,回發事件會自動處理,一般情況是不用再寫揮發的事件了。
短短十行就搞定了。運個行吧,隻要屬性設定正确就可以正确分頁了。
對了,連接配接字元串的問題。
在Web.Config裡面添加“ConnStr”就可以了。
<appSettings>
<add key="ConnStr" value="data source=.;initial catalog=Test;persist security info=False;user id=sa;pwd=admin;" />
</appSettings>
第二種情況稍微複雜一點,
PageLoad部分是一樣的,隻是在 SetPageInfo2 多設定幾個屬性就可以了。
private void SetPageInfo2()
Page1.SetSQLKind = "2"; //表示采用第2種分頁算法。
Page1.SqlPowerIDColumn = "ID"; //表的主鍵,注意:複合主鍵不可以!
Page1.SqlPowerOrderColumnA = "col1 ,col2 desc , col3 ,
"; //多個排序字段。
Page1.SqlPowerOrderColumnB = "col1 desc ,col2 , col3 desc ,
"; //多個排序字段,和上面的對應,但是排序方式相反。
Page1.SqlPowerHasMoreValue = true; //最後一個排序字段是否有重複值。
下載下傳位址;
http://files.cnblogs.com/jyk/Send.rar
<a href="http://files.cnblogs.com/jyk/Send.rar">http://files.cnblogs.com/jyk/Send.rar</a>
分頁效果