自定义GridView分页样式

      使用GridView控件时,我们经常遇到的一个问题就是数据的分页问题。GridView控件内置了几种分页的样式,但这些样式比较简单,而且不是很美观。那么如何自定义GridView控件的分页样式呢?这里,我们就要使用GridView控件的 PagerTemplate 了。先看一下代码吧!      

ContractedBlock.gif ExpandedBlockStart.gif Code
1 <PagerTemplate>
2         <br />
3         <asp:Label ID="lblPage" runat="server" Text='<%# "第" + (((GridView)Container.NamingContainer).PageIndex + 1)  + "页/共" + (((GridView)Container.NamingContainer).PageCount) + "页" %> '></asp:Label>
4         <asp:LinkButton ID="lbnFirst" runat="Server" Text="首页"  Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>' CommandName="Page" CommandArgument="First" ></asp:LinkButton>
5         <asp:LinkButton ID="lbnPrev" runat="server" Text="上一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>' CommandName="Page" CommandArgument="Prev"  ></asp:LinkButton>
6         <asp:LinkButton ID="lbnNext" runat="Server" Text="下一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>' CommandName="Page" CommandArgument="Next" ></asp:LinkButton>
7         <asp:LinkButton ID="lbnLast" runat="Server" Text="尾页"   Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>' CommandName="Page" CommandArgument="Last" ></asp:LinkButton>
8         <br />
9     </PagerTemplate>

       在这段代码中,第3行代码定义了当前页和总页数的信息,显示样式为“第1页/共5页”。4-7行代码分别定义了“首页”、“上一页”、“下一页”和“尾页”的样式。然后,我们看一下运行的结果吧!      

 
      这样就好看多了吧!而且简单明了!

      另外,使用分页时还有注意一点:如果你的数据源是使用诸如ObjectDataSource之类的话,不需要做过多的设置,就可以工作的很好。但如果你的数据源是在程序中动态创建的话,则还要在pageIndexChanging和PageIndexChanged事件处理程序中稍作处理,否则会抛出异常!
      举个例子:      

ContractedBlock.gif ExpandedBlockStart.gif Code
 1     protected void Page_Load(object sender, EventArgs e)
 2     {
 3         if (!string.IsNullOrEmpty(this.Request.QueryString["key"]))
 4         {
 5             KeyStr = Server.UrlDecode(this.Request.QueryString["key"].ToString());
 6         }        
 7 
 8         if(!IsPostBack)
 9         {
10             BindResource();
11         }
12 
13     }
14 
15     private void BindResource()
16     {
17         resources = Resource.GetResourcesByTitle(KeyStr);
18 
19         if (resources != null)
20         {
21             this.gvwResources.DataSource = resources;
22             this.gvwResources.DataBind();
23         }
24 
25         this.lbltext.Text = KeyStr;
26     }

      这个例子中,gvwResources是一个GridView类的实例,我们在Page_Load事件处理程序中为其创建了一个List<Resources>类型的数据源resources。此时,我们就需要对gvwResources对象的PageIndexChanging和PageIndexChanged事件进行处理。代码如下:      

ContractedBlock.gif ExpandedBlockStart.gif Code
1     protected void gvwResources_PageIndexChanging(object sender, GridViewPageEventArgs e)
2     {
3         gvwResources.PageIndex = e.NewPageIndex;
4     }
5     protected void gvwResources_PageIndexChanged(object sender, EventArgs e)
6     {
7         BindResource();
8     }

      在PageIndexChanging事件处理程序中,将要显示的新页的值赋给gvwResources的PageIndex属性,在PageIndexChanged事件处理程序中,则将数据源重新绑定到gvwResources对象上。这样,自定义的分页按钮就能很好的工作了!

转载于:https://www.cnblogs.com/lao-zhang/archive/2009/09/14/1566546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值