当前位置: 首页 > 编程日记 > 正文

自定义GridView分页模板

GridView较之DataGrid提供了更加强大、更加完善的功能,而且具备了丰富的可扩展功能,可以使用GridView提供的pagertemplate自定义分页模板:

事实上,GridView默认的几中分页样式,都是将相关按钮的CommandName设为Page,而CommandArgument设为相关参数,可接受的参数包括,first,last,prev,next,<PageIndex>(具体数字),然后按事件回溯,触发顶层的RowCommand,因此我们页可以使用这些默认的可识别的参数自定义自己的分页模板,asp.net会自动设置当前的NewPageIndex,而不需要任何的冗余代码。

.aspx页面:


<asp:gridview id="GridView1" runat="server" allowpaging="True" pagesize="10"
            autogeneratecolumns="False" datasourceid="SqlDataSource1"
            onpageindexchanging="GridView1_PageIndexChanging">
            <columns>
                <asp:boundfield datafield="CompanyName" headertext="CompanyName" sortexpression="CompanyName" />
                <asp:boundfield datafield="ContactTitle" headertext="ContactTitle" sortexpression="ContactTitle" />
                <asp:boundfield datafield="Phone" headertext="Phone" sortexpression="Phone" />
                <asp:boundfield datafield="Fax" headertext="Fax" sortexpression="Fax" />
                <asp:boundfield datafield="ContactName" headertext="ContactName" sortexpression="ContactName" />
            </columns>
                       <pagertemplate>
                        <table width="100%">
                          <tr>
                            <td style="text-align:right">
                            第<asp:Label id="lblPageIndex" runat="server" text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1  %>' />页
                                共/<asp:Label id="lblPageCount" runat="server" text='<%# ((GridView)Container.Parent.Parent).PageCount  %>' />页
                                <asp:linkbutton id="btnFirst" runat="server" causesvalidation="False" commandargument="First" commandname="Page" text="首页" />
                              <asp:linkbutton id="btnPrev" runat="server" causesvalidation="False" commandargument="Prev" commandname="Page" text="上一页" />
                             <asp:linkbutton id="btnNext" runat="server" causesvalidation="False" commandargument="Next" commandname="Page" text="下一页" />                         
                             <asp:linkbutton id="btnLast" runat="server" causesvalidation="False" commandargument="Last" commandname="Page" text="尾页" />                                           
                             <asp:textbox id="txtNewPageIndex" runat="server" width="20px" text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1  %>' />
                             <asp:linkbutton id="btnGo" runat="server" causesvalidation="False" commandargument="-1" commandname="Page" text="GO" /><!-- here set the CommandArgument of the Go Button to '-1' as the flag -->
                             </td>
                          </tr>
                        </table>
                    </pagertemplate>
        </asp:gridview>
   
   
        <asp:sqldatasource id="SqlDataSource1" runat="server" connectionstring="Data Source=.;Initial Catalog=Northwind;Integrated Security=True"
            providername="System.Data.SqlClient" selectcommand="SELECT [CompanyName], [ContactTitle], [Phone], [Fax], [ContactName] FROM [Customers]">
        </asp:sqldatasource>
PageIndexChanging处理程序:
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView theGrid = sender as GridView;  // refer to the GridView
        int newPageIndex = 0;

if (-2 == e.NewPageIndex) { // when click the "GO" Button
            TextBox txtNewPageIndex = null;
            //GridViewRow pagerRow = theGrid.Controls[0].Controls[theGrid.Controls[0].Controls.Count - 1] as GridViewRow; // refer to PagerTemplate
GridViewRow pagerRow = theGrid.BottomPagerRow; //GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
//updated at 2006年6月21日3:15:33

if (null != pagerRow) {
                txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox;   // refer to the TextBox with the NewPageIndex value
            }

if (null != txtNewPageIndex) {
                newPageIndex = int.Parse(txtNewPageIndex.Text) - 1; // get the NewPageIndex
            }
        }
        else {  // when click the first, last, previous and next Button
            newPageIndex = e.NewPageIndex;
        }

// check to prevent form the NewPageIndex out of the range
        newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
        newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;

// specify the NewPageIndex
        theGrid.PageIndex = newPageIndex;

// rebind the control
        // in this case of retrieving the data using the xxxDataSoucr control,
        // just do nothing, because the asp.net engine binds the data automatically
    }
注意到,上面的示例中,由于增加了一个跳转按钮GO,但是asp。net不支持相关的CommandArgument值,虽然可以将Go Button的Commandname设为Page,还需要手动的在PageIndexChanging增加部分处理逻辑。

相关文章:

“雾霾”天里坐看云起时-【软件和信息服务】2014.01

2013年是中国关注雾霾的元年&#xff0c;中国经济高速发展了30多年后&#xff0c;我们终于幡然醒悟&#xff1a;雾霾和各种污染也开始正式进入公众和各级政府的视野。VMware在12月6日召开的VSS上海站并没有因为雾霾肆虐而降低热度&#xff0c;IT界在雾霾天里继续着云中漫步。20…

CSDN 给你一个薅羊毛的机会!你真的不要吗?

抢红包、集福卡、转锦鲤等等&#xff0c;每年过年过节&#xff0c;各种价值几十亿的瓜分活动&#xff0c;对于网络冲浪选手来说&#xff0c;眼花缭乱但也乐趣满满。可现实是&#xff1a;你抢了5毛8&#xff0c;人家抢了好几万&#xff01;甚至前段时间&#xff0c;字节跳动安全…

ASP.NET TricksTip:关于Tooltip(title)的换行问题

我们知道&#xff0c;为了使对于普通 HTML 元素的title可以换行&#xff0c;至少可以有可以两种方式&#xff1a; 1。将title的文本分行写 <a href"#" title"helloworld">hello world</a>2。插入换行符号 <a href"#" title&q…

谷歌高管又变动:AI 研究部门元老即将离职

整理 | 寇雪芹头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本周二&#xff0c;谷歌研究院负责人 Samy Bengio 宣布辞职。Samy Bengio 在公司内部邮件中表示自己决定离开谷歌&#xff0c;并将于 4 月 28 日正式离职。目前&#xff0c;Samy Be…

jQuery 1.9 移除了 $.browser 的替代方法

$.browser是通过正则表达式来匹配userAgent来判断浏览器版本和种类的.jquery1.3.2版本的文档中已经声明jquery.browser及jquery.browser.version建议弃用&#xff0c;可以使用jquery.support来代替。jQuery 从 1.9 版开始&#xff0c;移除了 $.browser 和 $.browser.version &a…

异常检测算法:Isolation Forest

iForest &#xff08;Isolation Forest&#xff09;是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法&#xff0c;具有效果好、训练快&#xff08;线性复杂度&#xff09;等特点。 1. 前言 iForest为聚类算法&#xff0c;不需要标记数据训练。首先给出几个定义&am…

asp.net 2.0中的弹出对话框

在asp.net 1.1中&#xff0c;要做1个弹出的对话框的话&#xff0c;一般是在服务端的代码中这样写&#xff1a; btnClick.Attributes.Add("onclick", "return confirm(Are you sure?);"); 现在在ASP.NET 2.0中&#xff0c;只要使用客户端的代码就可以拉&a…

2014学习目标

学习目标 给自己定一个学习计划&#xff0c;省着没有目的瞎弄。 整理javascript基础&#xff0c;记录博客&#xff08;进行中......&#xff09;学习jquery源码&#xff0c;培养自己的实战技巧学习nodejs&#xff0c;充实自己&#xff0c;记录博客学习git的使用&#xff0c;记录…

2021全球最具影响力 AI 学者榜单: 中国占比11.1%,位列第二

2021 年 4 月 8 日&#xff0c;2021 年人工智能全球最具影响力学者——AI 2000 榜单重磅揭晓。AI 2000 榜单由清华大学 AMiner 联合北京智源人工智能研究院、清华 - 中国工程院知识智能联合研究中心共同发布&#xff0c;旨在通过 AMiner 学术数据在全球范围内遴选过去十年人工智…

BootStrap 模态框禁用空白处点击关闭

转自&#xff08;http://www.cnblogs.com/DayDreamEveryWhere/p/4550320.html&#xff09; 模态框为信息编辑窗口,涉及好多内容,填了半天,若一不小心点了空白处..... $(#myModal).modal({backdrop: static, keyboard: false}); backdrop:static时,空白处不关闭. keyboard:false…

asp.net 2.0中设定默认焦点按钮

在asp.net 1.1中&#xff0c;当要在page_load页面中&#xff0c;设置某个控件为默认的焦点按钮&#xff08;也就是默认焦点是在这个控件上的&#xff09;&#xff0c;可能要用到javascript的代码&#xff0c;而在ASP.NET 2.0中&#xff0c;不用这些麻烦了&#xff0c;在form代码…

(送)Java 架构技术揭秘:Redis+Nginx+Dubbo精选+面试题+精选视频

最近花了很长的时间去搜罗整理Java核心技术好文&#xff0c;我把每个Java核心技术的优选文章都整理成了一个又一个的文档。今天就把这些东西分享给小伙伴们&#xff0c;也能为小伙伴们省去不少麻烦&#xff0c;想学什么技能了&#xff0c;遇到哪方面的问题了 直接打开文档学一学…

Twitter的应急预案、部署流程

2019独角兽企业重金招聘Python工程师标准>>> 《空中之城》事件 在构建Twitter的架构和系统时&#xff0c;我们是以周为单位来确定那些系统的性能的&#xff0c;我们能清楚地知道每个服务维度的系统理论容量&#xff0c;从而尝试去了解整个系统的理论容量。基于这些信…

新产品发布与A轮2000万美元 双喜临门后GrowingIO还要做什么

ZD至顶网CIO与应用频道 06月29日 北京消息&#xff08;文/王聪彬&#xff09;&#xff1a;一个用户一天可能会打开超过12个App&#xff0c;但其中只有3个App的使用时间超过80%。这反映了大多数人使用手机的现状。 透过现象看本质&#xff0c;中国互联网、移动互联网市场既有人口…

gridview列 数字、货币和日期 显示格式

形式语法结果注释数字{0:N2}12.36 数字{0:N0}13 货币{0:c2}$12.36 货币{0:c4}$12.3656 货币"&#xffe5;{0:N2}"&#xffe5;12.36 科学计数法{0:E3}1.23E001 百分数{0:P}12.25%P and p present the same.日期{0:D}2006年11月25日 日期{0:d}2006-11-25 日期{0:f}200…

打造专属BGM,​Python 深度学习教你

作者 | 李秋键头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;音乐文字&#xff0c;组合食用&#xff0c;效果更佳。引言&#xff1a;“那些听不到音乐的人&#xff0c;以为跳舞的人疯了。” 尼采这句话好有趣&#xff0c;也告诉我们音乐对于日…

XML 特殊字符处理和 CDATA

在处理XML数据时&#xff0c;特殊字符要特殊处理&#xff0c;不能和节点字符混淆。 所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段&#xff08;CDATA section&#xff09;中的文本会被解析器忽略。 PCDATA PCDATA 指的是被解析的字符数据&#xff08;Parsed Charac…

zookeeper集群环境搭建

2019独角兽企业重金招聘Python工程师标准>>> 至少3台zookeeper:第一台:con/zoo.cfgtickTime2000 initLimit10 syncLimit5 dataDirC:\\Users\\Administrator\\Desktop\\Zookeepers\\zookeeper-3.4.6.1\\data dataLogDirC:\\Users\\Administrator\\Desktop\\Zookeeper…

ASP.NET遍历配置文件的连接字符串

在ASP.NET 2.0中&#xff0c;提供了更方便的配置文件访问的类&#xff0c;具体可以到 System.Configuration 名称空间下进行查看。本文提供一种在开发过程中常用的得到数据库字符串的方法&#xff0c;为方便使用&#xff0c;写成一个方法进行调用&#xff1a; public string Ge…

#define WIN32_LEAN_AND_MEAN 的作用

[转]#define WIN32_LEAN_AND_MEAN 的作用 今天看了用mysql的库vc连接数据库,结果我用mfc application向导建立一个工程,然后添加#include "mysql.h"(已经设置好了环境),编译出现了一大堆错误,如下 Compiling...StdAfx.cppc:mysqlincludemysql_com.h(116) : error C21…

​《头号玩家》中的“绿洲”,用 VR 可以找到

图源&#xff1a;百度百科出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;2045年&#xff0c;现实世界令人失望&#xff0c;人们将救赎的希望寄托于“绿洲”&#xff0c;一个虚拟游戏宇宙。人们只要戴上VR设备&#xff0c;就可以进入这个与现实形成强烈反差的虚拟世界…

Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)

上篇文章介绍了Android开发的设计理念的一部分&#xff0c;并没有得到博友们的多大认可&#xff0c;仅仅看到了一位博友在以下留言期待下一篇文章的发表&#xff0c;为了这小小的唯一支持。我决定继续把后面的8个要点介绍一下&#xff0c;自己也潜心反省一下&#xff0c;自己的…

Espresso小试

Espresso开源了&#xff0c;那就试着用一下&#xff0c; 1. 下载Espresso Espresso没有提供单独的jar包下载&#xff0c;建议clone整个项目或者下载zip包 git clone https://code.google.com/p/android-test-kit/ 或从这里下载&#xff1a;https://code.google.com/p/android-t…

XML与DataSet的相互转换类

送给大家一个XML与DataSet的相互转换的类:XmlDatasetConvert 该类提供了四种方法&#xff1a;1、将xml对象内容字符串转换为DataSet2、将xml文件转换为DataSet3、将DataSet转换为xml对象字符串4、将DataSet转换为xml文件 XmlDatasetConvert.csusing System;using System.Colle…

想学Python?那这套教程再适合不过了!

如果你想问最近这些年什么编程语言最值得学习&#xff0c;我相信很多人都会告诉你是Python&#xff01;所以不仅是开发小白&#xff0c;甚至很多开发老手&#xff0c;也都开始学习Python&#xff0c;作为辅助第二语言来提高自己的职场竞争力。不过结合我最近这些年Python的学习…

修改360浏览器 标题栏 显示的文字

作者&#xff1a;韩梦飞沙 Author&#xff1a;han_meng_fei_sha 邮箱&#xff1a;313134555qq.com E-mail: 313134555 qq.com 修改360浏览器 标题栏 显示的文字 dll修改 DLL(Dynamic Link Library)文件是一种常见的应用程序拓展&#xff0c;也叫动态链接库文件。若遇到一些已经…

联邦学习的隐忧:来自梯度的深度泄露

作者 | Ligeng Zhu and Song Han编译 | 对外经济贸易大学金融科技实验室头图 | 下载于视觉中国【编者按】数据交易流通是数据要素市场建立的关键环节。为了在推动数据流动的同时保护数据安全、个人信息和隐私&#xff0c;隐私计算技术因运而生。目前&#xff0c;该技术分为三个…

.net 中 using的几种用法

1. using指令。using 命名空间名字&#xff0c;这样可以在程序中直接用命令空间中的类型&#xff0c;而不必指定类型的详细命名空间&#xff0c;类似于Java的import&#xff0c;这个功能也是最常用的&#xff0c;几乎每个cs的程序都会用到。例如&#xff1a;using System; 一般…

少走弯路的10条忠告

如何在涉世之初少走弯路&#xff0c;有一个好的开端&#xff0c;开始一番成功的事业&#xff1f;以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧&#xff0c;比起所学的课堂课程来&#xff0c;它毫不逊色&#xff01; 1. 买个闹钟&#xff0c;以…

linux实战考试题:批量创建用户和密码(不能使用循环)

批量创建10个用户&#xff0c;并且设置随机8位密码&#xff0c;要求不能用shell的循环&#xff08;例如&#xff1a;for,while等&#xff09;&#xff0c;只能用linux命令及管道实现。方法1&#xff1a;[rootoldboy /]# echo stu{01..10}|tr " " "\n"|sed …