您的位置:首页 > 其它

GridView控件自定义分页详解

2006-09-29 09:03 363 查看

GridView控件自定义分页详解

前些天我写了关于 <<在存储过程中实现分页>>和<<GridView控件事件详解 >> ,后来又有一些人问我怎样在GridView中应用这个东东!其实很简单,主要是怎么保存当前页面的页码PageIndex问题,不过把这个解决了什么都好办了.因为在分页过程中:PageSize是一定的,我们可以用一个属性来表示.保存PageIndex好多中方法,而且数据不是很庞大,基本不会好太多的资源.还是一句老话,话再多都没有例子直观.

在这里我们将用一个隐藏字段来保存这个PageIndex,即当前页码.当点击上一页时,将它的值减一,知道为0,要注意的一点这里的第一页页码是0而不是1.下面看看代码,然后我们再分析分析!

1<asp:GridView ID="NewsGrid" runat="server" AutoGenerateColumns="False" AllowPaging="false" Width="100%">
2 <Columns>
3 <asp:BoundField DataField="NewsId" HeaderText="新闻ID"/>
4 <asp:HyperLinkField DataNavigateUrlFields="NewsId" DataNavigateUrlFormatString="~/Details.aspx?ID={0}"
5 DataTextField="Title" HeaderText="新闻标题" ItemStyle-Width="70%"/>
6 <asp:BoundField DataField="PostTime" HeaderText="发布时间"/>
7 <asp:CommandField HeaderText="新闻管理" ShowCancelButton="False" ShowDeleteButton="True"
8 ShowEditButton="True"/>
9 </Columns>
10 </asp:GridView>
11 <div style=" height:16px; padding-top:5px; margin-right:30px; float:right">
12 <asp:HiddenField ID="CurrentPage" runat="server" Value="0"/>
13 <asp:LinkButton ID="First" runat="server" CommandArgument="first" OnClick="PagerButton_Click">首 页</asp:LinkButton>
14 <asp:LinkButton ID="Prev" runat="server" CommandArgument="prev" OnClick="PagerButton_Click">上一页</asp:LinkButton>
15 <asp:LinkButton ID="Next" runat="server" CommandArgument="next" OnClick="PagerButton_Click">下一页</asp:LinkButton>
16 <asp:LinkButton ID="Last" runat="server" CommandArgument="last" OnClick="PagerButton_Click">尾 页</asp:LinkButton>
17 </div> CS文件中的代码:

1 protected void PagerButton_Click(object sender, EventArgs e)
2using System;
2using System.Data;
3using System.Data.SqlClient;
4//其中EntitySimple类位于下面的命名空间中.
5using NexPlus.Entities;
6
7using System;
2using System.Collections;
3
4namespace NexPlus.Entities
5 public class EntitySet
7 ArrayList entities = new ArrayList();
9 int totalRecords = 0;
10 /**//// <summary>
11 /// 实体总纪录数。
12 /// </summary>
13 public int TotalRecords get set }
17 /**//// <summary>
18 /// 实体项列表。
19 /// </summary>
20 public ArrayList Entities get }
23 /**//// <summary>
24 /// 实体中是否有项。
25 /// </summary>
26 public bool HasResults get if (entities.Count > 0)
29 return true;
30 return false;
31 }
32 }
33 }
34}
EntitySet其实就是一个ArrayList的变形版,有了这个类在读取是就可以将对象entitySimple给Add进去了,当我们要用的时候就可以直接调用了:EntitySet set=SimpleManager.GetAllEntitySimple().Entities;如果直接使用SimpleManager.GetAllEntitySimple().Entities前显式转化:(EntitySimple)SimpleManager.GetAllEntitySimple().Entities.

代码很简单,但能构充当十分重要的角色,对于一个网站来说需要很多个实体类集合,这里我们就可以用这个类来替代集合类.能构减少很多代码,当然你可以用List<EntitySimple>,但是有时需要TotalRecords,就不能直接从中读取,像上一篇文章中就不需要加out int totalRecords了,可以直接存在这个类里,我觉得这个类会比较好用,所以就拿出来和大家分享一下,或许你有更好的,希望批评指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: