** ASP.NET ** ** 分页组件学与用——使用篇 ** ** **
大家好,这篇文章承启上一篇文章《 ASP.NET 分页组件学与用——教学篇 》。
在《 ASP.NET 分页组件学与用——教学篇 》中,我们讲解了分页组件的整个创建过程,那么在这一篇文章中,我们主要讨论一下如何使用该组件。
请按以下步骤操作:
1、 创建一个 WEB 应用程序工程。
2、 将上篇文章中生成的组件添加到工具箱中。如果您不知道添加的过程,请参考文章《 ASP.NET 组件编程 step by step 》
3、 在默认的 WEB 窗体页面中,切换到 HTML 视图,把下列 HTML 代码复制到
1<form> 标签中。
2
3<div align="center">
4<center>
5<table border="0" cellpadding="0" cellspacing="0" height="155" style="FONT-SIZE:12px" width="756">
6<tr>
7<td height="23" width="756"> 分页控件的使用实例 </td>
8</tr>
9<tr>
10<td align="center" height="110" id="myHtml" runat="server" valign="top" width="756"></td>
11</tr>
12<tr>
13<td height="22" width="756">
14</td>
15</tr>
16</table>
17</center>
18</div>
19
204、 该 HTML 代码生成一个三行一列的表格, 从工具箱将控件拖到该表格的第三行中。
21
225、 在 private void Page_Load( object sender, System.EventArgs e) 事件处理程序中添加如下代码:
23
24int cp;
25
26if ( this .Request.Params[ "currentPage" ] == null )
27
28{
29
30cp = 1;
31
32}
33
34else
35
36{
37
38cp = Convert.ToInt32( this .Request.Params[ "currentPage" ]);
39
40}
41
42SqlConnection con = new SqlConnection( "server=accp-lzh;uid=sa;pwd=sasa;database=Northwind" );
43
44SqlCommand cmd = new SqlCommand( "select * from [Order Details]" ,con);
45
46SqlDataAdapter adapter = new SqlDataAdapter();
47
48adapter.SelectCommand = cmd;
49
50DataSet ds = new DataSet();
51
52con.Open();
53
54adapter.Fill(ds, "table" );
55
56con.Close();
57
58DataTable dt = new DataTable();
59
60dt = ds.Tables[ "table" ];
61
62//以下设置控件参数
63
64this .LzhPages1.AllCount = dt.Rows.Count; //总记录条数
65
66this .LzhPages1.CurrentPage = cp; //当前页,从URL中读取
67
68this .LzhPages1.ShowPages = 10; //导航数字个数
69
70this .LzhPages1.Count = 10; //每页显示的记录条数
71
72StringBuilder sql = new StringBuilder();
73
74//以下三个字符串最终组合成一个完整的表格<table>
75
76string htmlHeader = "" ; //<table>标签
77
78string htmlBody = "" ; //中间有若干个<tr>标签,即行
79
80string htmlFoot = "" ; //</tr></table>标签
81
82sql.AppendFormat( "select top {0} * from [Order Details] where 1=1 and OrderID not in (select top {1} OrderID from [Order Details] where 1=1 order by OrderID desc) order by OrderID desc" , this .LzhPages1.Count, this .LzhPages1.CurrentPage * this .LzhPages1.Count);
83
84SqlCommand cmd1 = new SqlCommand(sql.ToString(),con);
85
86adapter.SelectCommand = cmd1;
87
88con.Open();
89
90adapter.Fill(ds, "table1" );
91
92con.Close();
93
94dt= ds.Tables[ "table1" ];
95
96htmlHeader = "<table border="1" bordercolor="#008000" bordercolordark="#FFFFFF" bordercolorlight="#008000" cellpadding="0" cellspacing="0" style="font-size:12px" width="100%">\n" ;
97
98for ( int i = 0;i < dt.Rows.Count ;i ++)
99
100{
101
102htmlBody = htmlBody + String.Format( "<tr>\n<td width="12%">{0}</td>\n<td width="43%">{1}</td>\n<td width="24%">{2}</td><td width="21%">{3}</td>\n</tr>\n" ,dt.Rows[i][0].ToString(),dt.Rows[i][1].ToString(),dt.Rows[i][2].ToString(),dt.Rows[i][3].ToString());
103
104}
105
106htmlFoot = "</table>\n" ;
107
108this .myHtml.InnerHtml = htmlHeader + htmlBody + htmlFoot;
109
1106、 sql.AppendFormat( "select top {0} * from [Order Details] where 1=1 and OrderID not in (select top {1} OrderID from [Order Details] where 1=1 order by OrderID desc) order by OrderID desc" , this .LzhPages1.Count, this .LzhPages1.CurrentPage * this .LzhPages1.Count); 此语句中的 SQL 语句就是用来分页的,我们的控件只是用来控制页面,数据还得通过 SQL 语句或存储过程读取。
111
1127、 结果图:
113
114</table></form>