首頁 > 後端開發 > C#.Net教程 > 介紹asp.net的幾種分頁方式

介紹asp.net的幾種分頁方式

伊谢尔伦
發布: 2017-04-29 14:36:04
原創
2461 人瀏覽過

通常分頁有3種方法,分別是asp.net自帶的資料顯示空間如GridView等自帶的分頁,第三方分頁控制項如aspnetpager,預存程序分頁等。這裡分別做總結。 
第一種:使用GridView自帶分頁,這種是最簡單的分頁方法。
前台的方法

1

2

3

<asp:GridView ID="GridView1" AllowPaging="true" runat="server"

onpageindexchanging="GridView1_PageIndexChanging" PageSize="3">

</asp:GridView>

登入後複製

後台方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using JXSoft.TicketManage.Model;

using JXSoft.TicketManage.BLL;

using System.Text.RegularExpressions;

using System.Data;

namespace JXSoft.TicketManage.Web

{

public partial class Test : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if(!IsPostBack)

{

BindData();

}

}

protected void BindData()

{

DataTable dt=new DataTable();

dt.Columns.Add("ID");

dt.Columns.Add("Name");

for (int i = 0; i < 10;i++ )

{

dt.Rows.Add(i.ToString(), i.ToString());

}

this.GridView1.DataSource = dt;

this.GridView1.DataBind();

}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

this.GridView1.PageIndex = e.NewPageIndex;

BindData();

}

}

}

登入後複製

第二種:使用個人化顯示的AspNetPager.dll進行分頁 
此處需要新增aspnetpager.dll的引用 
前台: 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<form id="form1" runat="server">

<div>

<asp:GridView ID="GridView1" runat="server" >

</asp:GridView>

<webdiyer:AspNetPager ID="AspNetPager1" runat="server"

CustomInfoHTML="第%CurrentPageIndex%页,共%PageCount%页,每页%PageSize%条"

FirstPageText="首页" LastPageText="尾页" LayoutType="Table" NextPageText="下一页"

onpagechanging="AspNetPager1_PageChanging" PageIndexBoxType="DropDownList"

PagingButtonLayoutType="Span" PrevPageText="上一页" ShowCustomInfoSection="Left"

ShowPageIndexBox="Always" SubmitButtonText="Go" PageSize="4" TextAfterPageIndexBox="页"

TextBeforePageIndexBox="转到">

</webdiyer:AspNetPager>

</div>

</form>

登入後複製

後台: 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using JXSoft.TicketManage.Model;

using JXSoft.TicketManage.BLL;

using System.Text.RegularExpressions;

using System.Data;

namespace JXSoft.TicketManage.Web

{

public partial class Test : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if(!IsPostBack)

{

BindData();

}

}

protected void BindData()

{

DataTable dt=new DataTable();

dt.Columns.Add("ID");

dt.Columns.Add("Name");

for (int i = 0; i < 10;i++ )

{

dt.Rows.Add(i.ToString(), i.ToString());

}

DataSet ds = new DataSet();

ds.Tables.Add(dt);

Pager(this.GridView1, this.AspNetPager1, ds);

}

protected void Pager(GridView dl, Wuqi.Webdiyer.AspNetPager anp, System.Data.DataSet dst)

{

PagedDataSource pds = new PagedDataSource();

pds.DataSource = dst.Tables[0].DefaultView;

pds.AllowPaging = true;

anp.RecordCount = dst.Tables[0].DefaultView.Count;

pds.CurrentPageIndex = anp.CurrentPageIndex - 1;

pds.PageSize = anp.PageSize;

dl.DataSource = pds;

dl.DataBind();

}

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)

{

AspNetPager1.CurrentPageIndex = e.NewPageIndex;

BindData();

}

}

}

登入後複製

第三種:使用AspNetPager結合儲存程序進行分頁 
這種方法分頁稍微複雜一些,但是可以應付比較大的資料量。
前台: 

1

2

3

4

5

6

7

8

9

10

<asp:GridView ID="GridView1" runat="server" CssClass="GridTable" AutoGenerateColumns="false" onrowdatabound="GridView1_RowDataBound" >

</asp:GridView>

<webdiyer:AspNetPager ID="AspNetPager1" runat="server"

CustomInfoHTML="第%CurrentPageIndex%页,共%PageCount%页,每页%PageSize%条"

FirstPageText="首页" LastPageText="尾页" LayoutType="Table" NextPageText="下一页"

onpagechanged="AspNetPager1_PageChanged" PageIndexBoxType="DropDownList"

PagingButtonLayoutType="Span" PrevPageText="上一页" ShowCustomInfoSection="Left"

ShowPageIndexBox="Always" SubmitButtonText="Go" PageSize="4" TextAfterPageIndexBox="页"

TextBeforePageIndexBox="转到">

</webdiyer:AspNetPager>

登入後複製

後台: 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//绑定方法中需要传递aspnetpager的两个属性

protected void DataBind(){

DataSet ds = reportQueryBLL.GetTcikDetailReport(this.txtStartDate.Text,this.txtEndDate.Text,int.Parse( this.DropDownListPartment1.SelectedValue),

this.txtPayPerson1.Text,this.txtTicketNum.Text,this.txtTicketNo.Text,

AspNetPager1.StartRecordIndex,AspNetPager1.EndRecordIndex);//注意最后两个参数是aspnetpager的属性。

this.GridView1.DataSource = ds;

this.GridView1.DataBind();

}

//分页控件的页索引变化事件

protected void AspNetPager1_PageChanged(object src, EventArgs e)

{

BindDetailReportToGv();

}

//page_base中需要加载首次的数据条数

DataSet ds = reportQueryBLL.GetDetail(this.txtStartDate.Text, this.txtEndDate.Text, int.Parse(this.DropDownListPartment1.SelectedValue), this.txtPayPerson1.Text, this.txtTicketNum.Text, this.txtTicketNo.Text);

this.AspNetPager1.RecordCount = ds.Tables[0].Rows.Count;

BindDetailReportToGv();

登入後複製

這裡用的預存程序比較複雜,因為SQL語句沒有能夠放到檢視中,也無法直接從表格中找出結果,這個儲存過程有點變態,如果有朋友看到了,希望能指點一下。 
其實預存程序的核心在於: 

1

2

3

4

5

6

7

8

9

Create PROCEDURE [dbo].[P_GetPagedOrders2005]

(@startIndex INT,

@endindex INT

)

AS

select * from (SELECT ROW_NUMBER() OVER(ORDER BY IPid DESC) AS rownum,

[IPid],[IPFrom],[IPTo],[IPLocation],[IPCity],[IPToNumber],[IPFromNumber] from IPInfo) as U

WHERE rownum between @startIndex and @endIndex

GO

登入後複製

以上是介紹asp.net的幾種分頁方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板