精品文档
GridView分页系列精装版
1 GridVi ew 自带分页 GridView 自带的分页是假分页他每次从数据库把数据全部查询出之后通过分页的算法进行按每页数量进行分页。
分页的属性元素分页功能的实现就是通过对这些属性元素的操作实现的。
//this.GvShow.PageIndex当前页的索引
//this.GvShow.PageCount总共的页数
//this.GvShow.Rows.Count当前页签内的gridview的行数
//this.GvShow.PageSize每页的记录数
//this.GvShow.PageIndex*this.GvShow.rows.count + 1 行索引
设置普通的 GridView分页 属性AllowPaging="True" 、 PageSize="2"设置分页事件onpageindexchanging="GvShow_PageIndexChanging"
后台方法绑定protected void GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)
{this.GvShow.PageIndex = e.NewPageIndex;
BindView() ;
}
2 自定义样式的GridView自带分页
普通的GridView自带的分页不带样式只是普通的1,2,3等如果希望获取到具有其他分页样式就应该设置<PagerSettingsPosition="TopAndBottom"PageButtonCount="1"/>属性<%--FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PreviousPageText="上一页"--%>
后台访问此属性的实例this.GvShow.PagerSettings.FirstPageText = "首页";this.GvShow.PagerSettings.LastPageText = "尾页";this.GvShow.PagerSettings.NextPageText = "下一页";this.GvShow.PagerSettings.PreviousPageText = "上一页";this.GvShow.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast;
通过<PagerStyle HorizontalAlign="Center" VerticalAlign="Middle" />属性可以设置GRIDVIEW分页的样式
3在<PagerTemplate></PagerTemplate>分页模板中自定义分页的样式虽然微软开辟了这个模板提供给用户类似于自定义分页的功能但这个功能完全还是基于微软的GridView自带的分页进行的 <PagerSettings>属性的Visable的属性必须是true AllowPaging="true"与PageSize="3"属性页都要进行相关的有效设置才可以。 这种情况下的分页可以不使用onpageindexchanging="GvShow_PageIndexChanging"微软自带的分页事件开发自己独立的分页事件与方法即可
范例
前台代码
<asp:GridViewid="GvShow"runat="server"Width="910px"BorderColor="#687BC4"
BorderWidth="1px"PageSize="3"
1欢迎。下载
精品文档
CellPadding="1"HorizontalAlign="Center"BorderStyle="None"AllowPaging="true"
AutoGenerateColumns="False"onpageindexchanging="GvShow_PageIndexChanging"onrowdatabound="GvShow_RowDataBound"Height="132px"onrowcommand="GvShow_RowCommand">
<SelectedRowStyleForeColor="#FFFF99"BackColor="#FFFF99"></SelectedRowStyle>
<AlternatingRowStyleBackColor="#EEF2F1"></AlternatingRowStyle>
<RowStyleBackColor="White"Height="24"></RowStyle>
<HeaderStyleWrap="False"HorizontalAlign="Center"Height="24px"ForeColor="Black"VerticalAlign="Middle"
BackColor="#BFD5FA"></HeaderStyle>
<%--<PagerSettings Position="TopAndBottom" />--%>
<%--FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PreviousPageText="上一页"--%>
<PagerStyleForeColor="White"HorizontalAlign="Center"BackColor="ActiveBorder"Font-Underline="false"/>
<Columns>
<asp:TemplateFieldHeaderText="省份">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LabelID="lblRegionName"runat="server"Text=' <%#Eval ("rname") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="城市">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LabelID="lblCityName"runat="server"Text=' <%#Eval ("cname") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="用户名">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LabelID="lblUserName"runat="server"Text=' <%#Eval ("username") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
2欢迎。下载
精品文档
</Columns>
<PagerTemplate>
<tablecellSpacing="0"cellPadding="0"width="100%"align="center"border="0">
<tr>
<tdvAlign="middle"align="center">
『<asp: linkbuttonid="cmdbegin"runat="server"CommandName="begin">首页</asp: linkbutton>』
『<asp: linkbuttonid="cmdbefore"runat="server"CommandName="before">上一页
</asp: linkbutton>』
『<asp: linkbuttonid="cmdafter"runat="server"CommandName="after">下一页
</asp: linkbutton>』
『<asp: linkbuttonid="cmdend"runat="server"CommandName="end">尾页</asp: linkbutton>』
</td>
<tdvAlign="middle"align="center">页次
<asp: labelid="txtNowPage"runat="server"ForeColor="red">0</asp: label>/<asp: labelid="txtAllPage"runat="server"ForeColor="red">0</asp: label>页
共
<asp: labelid="txtTotal"runat="server"ForeColor="red">0</asp: label>条记录
<asp: labelid="txtNowRed"runat="server"ForeColor="red">0</asp: label>条记录/页
</td>
<tdvAlign="top"align="center"><asp:checkboxid="cmdCheck"runat="server"Text="显示数字按钮"AutoPostBack="True"oncheckedchanged="cmdCheck_CheckedChanged"></asp:checkbox></td>
</tr>
</table>
</PagerTemplate>
</asp:GridView>
后台代码namespace GridViewDemo.GridView分页系列
{publicpartialclassGridView自定义分页02 : System.Web.UI.Page
{protectedvoid Page_Load(object sender, EventArgs e)
{if (!IsPostBack)
{
BindView() ;
InitButtons() ;
}
}
3欢迎。下载
精品文档privatevoid BindView()
{
DataTable dt = UserDemoAccess.GetUserSouce() ;
ViewState["RowCounts"] = dt.Rows.Count.ToString() ;this.GvShow.DataSource = dt; ;this.GvShow.DataBind() ;
}protectedvoid GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e)
{this.GvShow.PageIndex = e.NewPageIndex;
BindView() ;
InitButtons() ;
}protectedvoid GvShow_RowDataBound(object sender, GridViewRowEventArgs e)
{if (e.Row.RowType == DataControlRowType.DataRow)
{e.Row.Attributes.Add("onmouseover",
"this. setAttribute('BKC' , this. style.backgroundColor) ;this. style.cursor='default' , this. style.backgroundColor='#ffff99' ") ;e.Row.Attributes.Add("onmouseout",
"this. style.backgroundColor=this.getAttribute('BKC' ) ;") ;
}
//if(e.Row.RowType == DataControlRowType.Pager)
//{
// GridViewRow gr = e.Row;
// //页次--第几页
// Label txtNowPage = gr.FindControl ("txtNowPage") as Label;
// //总页数
// Label txtAllPage = gr.FindControl ("txtAllPage") as Label;
// //总记录数
// Label txtTotal = gr.FindControl ("txtTotal") as Label;
// //条记录/页
// Label txtNowRed = gr.FindControl ("txtNowRed") as Label;
// txtNowPage.Text = (this.GvShow.PageIndex+1) .ToString() ;
// txtAllPage.Text = this.GvShow.PageCount.ToString() ;
// txtTotal.Text = ViewState["RowCounts"] .ToString() ;
4欢迎。下载
精品文档
// txtNowRed.Text = this.GvShow.PageSize.ToString() ;
//}
}protectedvoid cmdCheck_CheckedChanged(object sender, EventArgs e)
{
//CheckBox cmdCheck = this.GvShow.BottomPagerRow.FindControl ("cmdCheck") as CheckBox;//if (cmdCheck.Checked)
//{
// this.GvShow.PagerSettings.Mode = PagerButtons.Numeric;
//}
}protectedvoid GvShow_RowCommand(object sender, GridViewCommandEventArgs e)
{
//控制页签swi tch(e.CommandName)
{case"begin":this.GvShow.PageIndex = 0;
; break;case"before":if(this.GvShow.PageIndex > 0)
{this.GvShow.PageIndex -= 1 ;
}
; break;case"after":if(this.GvShow.PageIndex <this.GvShow.PageCount - 1)
{this.GvShow.PageIndex += 1 ;
}
; break;case"end":this.GvShow.PageIndex = this.GvShow.PageCount-1 ;
; break;
}
//控制按钮
InitButtons() ;
}
5欢迎。下载
精品文档privatevoid InitButtons()
{
//获取gridviewrows的PagerTemplate底部模板
GridViewRow gr = this.GvShow.BottomPagerRow;
LinkButton cmdbegin = gr.FindControl ("cmdbegin") asLinkButton;
LinkButton cmdbefore = gr.FindControl ("cmdbefore") asLinkButton;LinkButton cmdafter = gr.FindControl ("cmdafter") asLinkButton;
LinkButton cmdend = gr.FindControl ("cmdend") asLinkButton;
//页次--第几页
Label txtNowPage = gr.FindControl ("txtNowPage") asLabel;
//总页数
Label txtAllPage = gr.FindControl ("txtAllPage") asLabel;
//总记录数
Label txtTotal = gr.FindControl ("txtTotal") asLabel;
//条记录/页
Label txtNowRed = gr.FindControl ("txtNowRed") asLabel;txtNowPage.Text = (this.GvShow.PageIndex + 1) .ToString() ;txtAllPage.Text = this.GvShow.PageCount.ToString() ;txtTotal.Text = ViewState["RowCounts"] .ToString() ;txtNowRed.Text = this.GvShow.PageSize.ToString() ;cmdbegin.Enabled = false;cmdbefore.Enabled = false;cmdafter.Enabled = false;cmdend.Enabled = false;if(this.GvShow.PageCount > 1)
{cmdbegin.Enabled = true;cmdbefore.Enabled = true;cmdafter.Enabled = true;cmdend.Enabled = true;if(this.GvShow.PageIndex == 0)
{
6欢迎。下载
精品文档cmdbegin.Enabled = false;cmdbefore.Enabled = false;
}elseif(this.GvShow.PageIndex == this.GvShow.PageCount-1)
{cmdafter.Enabled = false;cmdend.Enabled = false;
}
}
}
}
}
此外还可以不利用GridView自带的分页模板标记<PagerTemplate></PagerTemplate>可以在GridView的外部构造一个talbe与gridview对应这样更加灵活也应用于div中的GridView。
前台代码
<tableid="tablePager"runat="server"cellSpacing="0"cellPadding="0"width="100%"align="center"border="0">
<tr>
<tdvAlign="middle"align="center">
『<asp: linkbuttonid="cmdbegin"runat="server"CommandName="begin"OnCommand="PagerButton_Command">首页</asp: linkbutton>』
『<asp: linkbuttonid="cmdbefore"runat="server"CommandName="before"OnCommand="PagerButton_Command">上一页</asp: linkbutton>』
『<asp: linkbuttonid="cmdafter"runat="server"CommandName="after"OnCommand="PagerButton_Command">下一页</asp: l inkbutton>』
『<asp: linkbuttonid="cmdend"runat="server"CommandName="end"OnCommand="PagerButton_Command">尾页</asp: linkbutton>』
</td>
<tdvAlign="middle"align="center">页次
<asp: labelid="txtNowPage"runat="server"ForeColor="red">0</asp: label>/<asp: labelid="txtAllPage"runat="server"ForeColor="red">0</asp: label>页
共
<asp: labelid="txtTotal"runat="server"ForeColor="red">0</asp: label>条记录
<asp: labelid="txtNowRed"runat="server"ForeColor="red">0</asp: label>条记录/页
</td>
<tdvAlign="top"align="center"><asp:checkboxid="cmdCheck"runat="server"Text="显示数字按
7欢迎。下载
精品文档
钮"AutoPostBack="True"oncheckedchanged="cmdCheck_CheckedChanged"></asp:checkbox></td>
</tr>
</tabl e>
这俩种方式的区别在于适用内部的分页模板标记在触发事件后不用重新绑定GridView这个是由GridView内部的分页机制自动完成的而采用外部构造的方式在执行完之后必须重新绑定gridview因为这个时候的pageIndex等信息已经变化需要重新进行绑定。
后台代码protectedvoid PagerButton_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{swi tch (e.CommandName)
{case"begin":this.GvShow.PageIndex = 0;
; break;case"before":if (this.GvShow.PageIndex > 0)
{this.GvShow.PageIndex -= 1 ;
}
; break;case"after":if (this.GvShow.PageIndex <this.GvShow.PageCount - 1)
{this.GvShow.PageIndex += 1 ;
}
; break;case"end":this.GvShow.PageIndex = this.GvShow.PageCount - 1 ;
; break;
}
//在设置完页签后将数据源重新绑定到GridView中
BindView() ;
InitButtons() ;
}
一个很好样式的假分页功能齐全
前台页面:
<table>
<tr>
<td>
<asp:GridViewid="GvShow"runat="server"Width="910px"BorderColor="#687BC4"
BorderWidth="1px"PageSize="3"
CellPadding="1"HorizontalAlign="Center"BorderStyle="None"AllowPaging="true"
AutoGenerateColumns="False"
8欢迎。下载
精品文档onrowdatabound="GvShow_RowDataBound"Height="132px">
<SelectedRowStyleForeColor="#FFFF99"BackColor="#FFFF99"></SelectedRowStyle>
<AlternatingRowStyleBackColor="#EEF2F1"></AlternatingRowStyle><RowStyleBackColor="White"Height="24"></RowStyle>
<HeaderStyleWrap="False"HorizontalAlign="Center"Height="24px"ForeColor="Black"VerticalAlign="Middle"
BackColor="#BFD5FA"></HeaderStyle>
<PagerStyleForeColor="White"HorizontalAlign="Center"BackColor="ActiveBorder"Font-Underline="false"/>
<PagerSettingsMode="Numeric"Position="Bottom"Visible="false"/><Columns>
<asp:TemplateFieldHeaderText="省份">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LabelID="lblRegionName"runat="server"Text=' <%#Eval ("rname") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="城市">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LabelID="lblCityName"runat="server"Text=' <%#Eval ("cname") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="用户名">
<ItemStyleHorizontalAlign="Center"VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<asp:LabelID="lblUserName"runat="server"Text=' <%#Eval ("username") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td>
9欢迎。下载
Budgetvm(原EZ机房),2005年成立的美国老品牌机房,主打美国4个机房(洛杉矶、芝加哥、达拉斯、迈阿密)和日本东京机房的独立服务器和VPS业务,而且不限制流量,默认提供免费的1800G DDoS防御服务,支持IPv6和IPMI,多种免费中文操作系统可供选择,独立服务器主打大硬盘,多硬盘,大内存,用户可以在后台自行安装系统等管理操作!内存可定制升级到1536G,多块硬盘随时加,14TBSA...
ZJI是成立于2011年原Wordpress圈知名主机商—维翔主机,2018年9月更名为ZJI,主要提供香港、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册业务。本月商家针对香港阿里云线路独立服务器提供月付立减270-400元优惠码,优惠后香港独立服务器(阿里云专线)E3或者E5 CPU,SSD硬盘,最低每月仅480元起。阿里一型CPU:Intel E5-2630L...
提速啦 成立于2012年,作为互联网老兵我们一直为用户提供 稳定 高速 高质量的产品。成立至今一直深受用户的喜爱 荣获 “2021年赣州安全大赛第三名” “2020创新企业入围奖” 等殊荣。目前我司在美国拥有4.6万G总内存云服务器资源,香港拥有2.2万G总内存云服务器资源,阿里云香港机房拥有8000G总内存云服务器资源,国内多地区拥有1.6万G总内存云服务器资源,绝非1 2台宿主机的小商家可比。...