由于項目裡面還在使用vs2003,還沒有使用新的分頁控件,是以對新的分頁控件的測試還很不到位,遺留了不少的bug,感謝網友試用提出寶貴意見。由于項目正在收尾中,時間也不是太充裕,是以使用說明也不夠詳細。這次是發一個新的版本,另外主要是說一下,如何在一個頁面(一個項目)裡通路多種資料庫,對多種資料庫裡的表進行分頁。
我用過的資料庫有SQL Server2000、SQL Server2005、Access、Excel,而分頁控件也支援這四種資料庫,那麼就以這四種資料庫為例。目的是在一個頁面裡面對這四種資料庫裡的表進行分頁顯示。
目前分頁控件裡面的分頁算法有
// 基于Row_Number的分頁算法,隻支援SQL Server2005資料庫
Row_Number = 1,
// 基于表變量的分頁算法,支援SQL Server2000、SQL Server2005資料庫
TableVar = 2,
// Max的分頁算法。支援SQL Server2000、SQL Server2005資料庫
MaxMin = 3,
// 颠倒法,需要設定主鍵,已經修改了最後一頁的bug。支援SQL Server2000、SQL Server2005、Access、Excel
TopTop = 4,
// Max 和 颠倒法自動切換
Max_TopTop = 304,
// Max 和 表變量自動切換
Max_TableVar = 302
資料庫就用 northwind 吧,這個大家都有吧。拿一個簡單的表Products來分頁吧。
1、在頁面裡拖拽四個GridView控件,和四個分頁控件,一一對應,每一組對應一種資料庫。
2、由于資料庫的類型不一樣,是以每一個分頁控件都需要不同的資料通路函數庫的執行個體。由于web.confog裡面的連接配接字元串是通路SQL Server2000的,是以SQL Server2000對應的分頁控件就不用單獨設定了,其他的三個分頁控件需要單獨設定一下資料通路函數庫的執行個體。(代碼在下面一起給出)
3、資料通路函數庫的執行個體設定完畢之後其他的設定就沒有特殊的地方了,和通路一種資料庫是一樣的,隻是對于Excel檔案來說,表名是工作表 + “$”組成的。比如工作表的名稱是“Sheet1”,那麼對應的表名是“Sheet1$”。
4、代碼:
1
protected void Page_Load(object sender, EventArgs e)
2
{
3
Response.Cache.SetNoStore();
4
5
設定SQL 2005的分頁控件需要的資料通路函數庫的執行個體#region 設定SQL 2005的分頁控件需要的資料通路函數庫的執行個體
6
//連接配接字元串
7
string cnStr = @"Data Source=.\s05;Initial Catalog=northwind ;persist security info=False;user id=sa;pwd=admin;";
8
9
//定義資料通路函數庫
10
DataAccessHelp dal_2005 = new DataAccessHelp("1", cnStr);
11
//交給給分頁控件
12
this.myPager_2005.DAL = dal_2005;
13
#endregion
14
15
設定Access的分頁控件需要的資料通路函數庫的執行個體#region 設定Access的分頁控件需要的資料通路函數庫的執行個體
16
17
string Path = Server.MapPath("~/dataAccess.mdb");
18
cnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path + ";Jet OLEDB:Database Locking Mode=1;";
19
20
21
DataAccessHelp dal_Access = new DataAccessHelp("2", cnStr);
22
23
myPager_Access.DAL = dal_Access;
24
25
26
設定Excel的分頁控件需要的資料通路函數庫的執行個體#region 設定Excel的分頁控件需要的資料通路函數庫的執行個體
27
28
Path = Server.MapPath("~/dataExcel.xls");
29
cnStr = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + Path + ";Extended Properties=Excel 8.0";//;HDR=YES;
30
31
32
DataAccessHelp dal_Excel = new DataAccessHelp("2", cnStr);
33
34
this.myPager_Excel.DAL = dal_Excel;
35
36
37
38
if (!Page.IsPostBack)
39
40
setPageInfo1();
41
setPageInfo2();
42
setPageInfo3();
43
setPageInfo4();
44
}
45
}
46
47
設定分頁控件的屬性 sql 2000#region 設定分頁控件的屬性 sql 2000
48
private void setPageInfo1()
49
50
//以下三個屬性必須指派
51
this.myPager_2000.ControlGridID = this.GV_2000.ID;
52
53
this.myPager_2000.TableName = " Products"; //表名或者視圖名
54
this.myPager_2000.TableIDColumns = "ProductID"; //主鍵
55
this.myPager_2000.TableShowColumns = "*"; //顯示的字段,可以不填,預設為 *
56
this.myPager_2000.TableOrderColumns = "ProductName,ProductID "; //排序字段,可以寫多個字段
57
this.myPager_2000.TableQuery = ""; //查詢條件,不包含 where
58
59
this.myPager_2000.PageSize = 3; //一頁顯示的記錄數,預設一頁顯示20條記錄
60
this.myPager_2000.NaviCount = 8; //頁号導航的數量,預設10個
61
62
63
64
#endregion
其他資料庫的設定方法也是一樣的,省略了。下面的網址有完全的代碼。