asp.net一个非常简单的分页

分页,也是一个非常常见得需求,以前也用过很多的分页控件,现在自己参照之前用过的,自己总结一个非常简单实用的分页实现方法。具体如下:数据展示用Repeater,分页的话用js切换当前的页码,后台根据当前页码获取数据绑定到Repeater。

数据列表代码

<div class="js_celli list">

<div class="idea_cell_wh" >

<table class="table table-striped table-hover">

<asp:Repeater runat="server">

<HeaderTemplate>

<tr class="tips_title">

<th>主题</th>

<th width="10%">处理状态</th>

<th width="10%">发帖人</th>

<th width="10%">时间</th>

</tr>

</HeaderTemplate>

<ItemTemplate>

<tr>

<td class="titletd" title="<%#Eval("Title") %>"><%#Eval("Title") %></td>

<td><%#Eval("Status")+"" == "" ? "未分派" : Eval("Status") %></td>

<td><%#Eval("Author") %></td>

<td><%#DateTime.Parse( Eval("Created")+"").ToString("yyyy-MM-dd hh:mm") %></td>

</tr>

</ItemTemplate>

</asp:Repeater>

</table>

</div>

<div runat="server">

</div>

</div>

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

分页HTML

<div class="container" >

<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" >

<ul ></li>

</ul>

</div>

</div>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

分页JS

function TurnPage(type) {

var currentPage = getQueryString("currentPage") == null ? 1 : parseInt(getQueryString("currentPage"));

var maxPage = <%=maxPage%>;

switch (type) {

case 'f':

currentPage = 1;

break;

case 'p':

if (currentPage <= 1) {

return;

}

else {

currentPage = currentPage - 1;

}

break;

case 'n':

if (currentPage >= maxPage) {

return;

}

else {

currentPage = currentPage + 1;

}

break;

case 'e':

if(currentPage == maxPage)return;

currentPage = maxPage;

break;

case 'a':

if ( isNaN(parseInt(document.getElementById("txtInputNumber").value))) {

return;

} else if (parseInt(document.getElementById("txtInputNumber").value) > maxPage) {

alert("没有那么多页");

return;

} else {

currentPage = parseInt(document.getElementById("txtInputNumber").value);

}

break;

default:

break;

}

if(!isNaN(currentPage) && currentPage > 0)

{

location.href = "?currentPage=" + currentPage;

}

}

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

分页样式

ul.pagination {

display: inline-block;

}

.pagerlist {

float: left;

margin-left: 40%;

}

.pagination {

display: inline-block;

padding-left: 0;

margin: 20px 0;

border-radius: 4px;

}

.pagination {

display: inline-block;

padding-left: 0;

margin: 20px 0;

border-radius: 4px;

}

ul.pagination li {

float: left;

margin-right: 5px;

border: #e2e2e2 1px solid;

}

.pagination > li {

display: inline;

cursor: pointer;

}

.pagination > li:first-child > a, .pagination > li:first-child > span {

margin-left: 0;

border-top-left-radius: 4px;

border-bottom-left-radius: 4px;

}

ul.pagination li a, ul.pagination li a:link, ul.pagination li a:visited {

display: block;

padding: 0 10px;

line-height: 24px;

color: #666;

font-size: 12px;

text-decoration: none;

}

.pagination > li > a, .pagination > li > span {

position: relative;

float: left;

padding: 2px 12px;

margin-left: -1px;

line-height: 1.42857143;

color: #428bca;

text-decoration: none;

background-color: #fff;

border: 1px solid #ddd;

}

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

53

54

55

56

57

58

59

60

61

后台代码

//最大页码

public int maxPage = 0;

//页数

int PageSize = 50;

public SPWeb web = null;

public bool IsCoordinator = false;

protected void Page_Load(object sender, EventArgs e)

{

web = SPContext.Current.Web;

int currentPage = 1;

if (int.TryParse(Request["currentPage"] + "", out currentPage))

{

}

if (currentPage < 1) currentPage = 1;

DataTable dt = GetSDData();

if (dt != null && dt.Rows.Count > 0)

{

lbMessage.Disabled = false;

maxPage = (int)Math.Ceiling(dt.Rows.Count / (double)PageSize);

lbCurrentPage.Text = currentPage + "";

lbMaxPage.Text = maxPage + "";

SDRepeater.DataSource = Common.GetPagedTable(dt, currentPage, PageSize);

SDRepeater.DataBind();

}

else

{

lbMessage.Disabled = true;

lbMessage.InnerText = " ----- no data ----- ";

}

}

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

获取当前页的数据

/// <summary>

/// DataTable分页

/// </summary>

/// <param name="dt">DataTable</param>

/// <param name="PageIndex">PageIndex表示第几页</param>

/// <param name="PageSize">PageSize表示每页的记录数</param>

/// <returns></returns>

public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)

{

DataTable newdt = dt.Copy();

newdt.Clear();

int rowbegin = (PageIndex - 1) * PageSize;

int rowend = PageIndex * PageSize;

if (rowbegin >= dt.Rows.Count)

return newdt;

if (rowend > dt.Rows.Count)

rowend = dt.Rows.Count;

for (int i = rowbegin; i <= rowend - 1; i++)

{

DataRow newdr = newdt.NewRow();

DataRow dr = dt.Rows[i];

foreach (DataColumn column in dt.Columns)

{

newdr[column.ColumnName] = dr[column.ColumnName];

}

newdt.Rows.Add(newdr);

}

return newdt;

}

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

点赞 1

————————————————

版权声明:本文为CSDN博主「郑小晨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u012835032/article/details/80538155