zoukankan
html css js c++ java
gridview自定义分页
gridview里虽然有自动分页的功能,但是我们其实经常感觉不是很完善,比如,他没有页面直接跳转的功能,就是输入页数,然后跳转。还有他也没有显示记录的条数。其实,这些信息有时候是非常重要的。因此我们非常有必要实现这个功能。下面,我就讲述下如何实现自定义分页的。
一、首先要将gridview设置成可以分页,然后我们在增加如下代码:
<
asp:GridView ID
=
"
GridView1
"
runat
=
"
server
"
AutoGenerateColumns
=
"
False
"
Width
=
"
98%
"
AllowPaging
=
"
True
"
OnPageIndexChanging
=
"
GridView1_PageIndexChanging
"
PageSize
=
"
20
"
>
<
Columns
>
<
asp:BoundField DataField
=
"
UserName
"
HeaderText
=
"
登陆用户名
"
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:BoundField
>
<
asp:BoundField DataField
=
"
Name
"
HeaderText
=
"
真实姓名
"
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:BoundField
>
<
asp:BoundField DataField
=
"
PostName
"
HeaderText
=
"
职位
"
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:BoundField
>
<
asp:BoundField DataField
=
"
OrgName
"
HeaderText
=
"
组织
"
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:BoundField
>
<
asp:BoundField DataField
=
"
RoleName
"
HeaderText
=
"
角色
"
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:BoundField
>
<
asp:BoundField DataField
=
"
StateStr
"
HeaderText
=
"
当前状态
"
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:BoundField
>
<
asp:TemplateField HeaderText
=
"
操作
"
>
<
ItemTemplate
>
<
asp:LinkButton ID
=
"
LinkButtonEdit
"
runat
=
"
server
"
CommandArgument
=
'
<%# Eval("UserID") %>
'
OnClick
=
"
LinkButtonEdit_Click
"
>
编辑
</
asp:LinkButton
>
&
nbsp;
<
asp:LinkButton ID
=
"
LinkButtonDelete
"
runat
=
"
server
"
CommandArgument
=
'
<%# Eval("UserID") %>
'
OnClick
=
"
LinkButtonDelete_Click
"
>
删除
</
asp:LinkButton
>
</
ItemTemplate
>
<
ItemStyle CssClass
=
"
griditem
"
/>
<
HeaderStyle CssClass
=
"
gridhead
"
/>
</
asp:TemplateField
>
</
Columns
>
<
EmptyDataTemplate
>
<
table border
=
'
0
'
cellpadding
=
'
0
'
cellspacing
=
'
0
'
style
=
'
border-right: coral 1px dotted;border-top: coral 1px dotted; border-left: coral 1px dotted; border-bottom: coral 1px dotted;background-color: #ffffff;200px;height:55px;
'
><
tr
><
td align
=
'
center
'
style
=
"
height: 53px
"
><
font color
=
'
coral
'
><
b
>
没有任何数据
<
b
></
font
></
B
></
B
></
td
></
tr
></
table
>
</
EmptyDataTemplate
>
<PagerTemplate>
<table border="0" cellpadding="0" cellspacing="0" style=" 99%; height: 15px">
<tr>
<td style=" 100px; height: 13px">
</td>
<td style=" 100px; height: 13px">
<div style=" 286px; height: 7px; font-size:12px;">
总共
<%=RecordCount%>
条记录 当前第
<%#((GridView)Container.NamingContainer).PageIndex+1%>/<%#((GridView)Container.NamingContainer).PageCount %>
页
</div>
</td>
<td style=" 100px; height: 13px">
<div style=" 252px; height: 8px; text-align: right">
<asp:LinkButton ID="FirstPage" runat="server" CommandArgument="First" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">第一页</asp:LinkButton>
<asp:LinkButton ID="PreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>
<asp:LinkButton ID="NextPage" runat="server" CommandArgument="Next" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>
<asp:LinkButton ID="LastPage" runat="server" CommandArgument="Last" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">最后一页</asp:LinkButton>
<asp:TextBox ID="TextGotoPage" runat="server" CssClass="pageeditbox"></asp:TextBox>
<asp:Button ID="PageGo" causesvalidation="False" commandargument="-1" commandname="Page" runat="server" CssClass="pagebutton" Text="Go" />
</div>
</td>
<td style=" 100px; height: 13px">
<div style=" 266px; height: 1px">
</div>
</td>
</tr>
</table>
</PagerTemplate>
</
asp:GridView
>
红色的部分就是自定义的分页代码,其实LinkButton里的
CommandArgument
参数就是gridview的当前页,
CommandName
表示触发的命令,这些都不能改。
注意里面有个RecordCount的变量,他是public类型,是从后台传过来的,表示记录的条数,测试的时候别忘了这个变量啊。
二、分页的代码
protected
void
GridView1_PageIndexChanging(
object
sender, GridViewPageEventArgs e)
{
SetGridPage(sender, e,
DtSource)
}
SetGridPage的函数
/**/
///
<summary>
///
分页处理
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
///
<param name="dt"></param>
public
void
SetGridPage(
object
sender, GridViewPageEventArgs e,DataTable dt)
{
GridView theGrid
=
(GridView)sender;
//
refer to the GridView
int
newPageIndex
=
0
;
GridViewRow pagerRow
=
theGrid.BottomPagerRow;
//
GridViewRow pagerRow = theGrid.Controls[0].Controls[theGrid.Controls[0].Controls.Count - 1] as GridViewRow;
//
refer to PagerTemplate
//
GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
if
(
-
2
==
e.NewPageIndex)
//
点击按钮的事件
{
TextBox txtNewPageIndex
=
null
;
if
(
null
!=
pagerRow)
{
txtNewPageIndex
=
(TextBox)pagerRow.FindControl(
"
TextGotoPage
"
);
//
refer to the TextBox with the NewPageIndex value
}
if
(
null
!=
txtNewPageIndex
&&
txtNewPageIndex .Text
!=
""
)
{
newPageIndex
=
int
.Parse(txtNewPageIndex.Text)
-
1
;
//
get the NewPageIndex
}
else
{
newPageIndex
=
0
;
}
}
else
{
//
当点击分页连接的时候
newPageIndex
=
e.NewPageIndex;
}
//
处理超出范围的分页
newPageIndex
=
newPageIndex
<
0
?
0
: newPageIndex;
newPageIndex
=
newPageIndex
>=
theGrid.PageCount
?
theGrid.PageCount
-
1
: newPageIndex;
((TextBox)pagerRow.FindControl(
"
TextGotoPage
"
)).Text
=
Convert.ToString(newPageIndex
+
1
);
//
帮定数据源
theGrid.PageIndex
=
newPageIndex;
theGrid.DataSource
=
dt;
theGrid.DataBind();
}
查看全文
相关阅读:
1-Java类结构和main函数
0-java概述
2-python元组和列表
SSH密码暴力破解及防御实战----防
SQL注入攻击及防御详解
XSS跨站攻防安全
文件包含渗透----当我们无法进行上传渗透时另一种黑客攻击
jspgou商城部署时报错:Could not open Hibernate Session for transaction; nested exception is org.hibernate.ex
上传漏洞----看完之后你也是黑客(中国菜刀和kali)
部署jenkins服务器出现Please wait while Jenkins is getting ready to work ...一直进不去该怎么办?
原文地址:https://www.cnblogs.com/ringwang/p/992062.html
最新文章
eclipse快速查看工程代码行数
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
MySQL中使用group_concat()函数数据字符过长报错的问题解决方法
自我介绍-嘿,我是Steven
Apple 史上以来最大的bootstrap漏洞
个性化定义博客园 (二)---实现鼠标点击效果和页首效果
不简单的二进制运算游戏-python3.0
个性化定义博客园 (一)---基础准备以及添加动态背景和音乐控件
如何用python编写可使用cmd控制台传入参数的简单四则算式计算器
重温Liunx环境搭建之二:打通网络+图形化
热门文章
重温Liunx环境搭建之一:下载镜像安装镜像
Linux系统下rpm包的安装和卸载
Linux中修改环境变量及生效方法
【Linux】VMwareWorkstation虚拟机安装CentOS 7操作系统
移动端自动化测试之--Monkey
移动端自动化测试之--package和activity
移动端自动化测试之--adb命令
移动端自动化测试之--Android SDK的安装与环境变量配置
3-Java逻辑控制语句
2-Java基本数据类型和运算符
Copyright © 2011-2022 走看看