GridView自定义分页

有时候的只是需要一些简单的但却是自定义的分页功能,但是又舍不得objectdatasource的排序功能,那就只有把pageddatasoure和objectdatasour结合起来,

由于pageddatasource实现的是IEnumberable,直接把objectdatasource赋给它是不行的,但是它的select()方法,却正好可以如愿:

1 ods.SelectParameters["strWhere"].DefaultValue = "1=1";
2
3 PagedDataSource ps = new PagedDataSource();
4  int currentPage = int.Parse(txtcurrentPage.Text);
5 ps.DataSource = ods.Select();

 

更新:

以上误,一旦gridview的数据源不再是objectdatasource,sorting功能也随即失效,而且还会报错,因为没有响应onsorting方法,我去编写sort方法的时候,却发现gridview的sortExpression和sortDirection都是只读的,也就是说,不能通过简单的只改属性的方法让其顺利排序,那么,就得用代码手动排序了,这样还有什么用gridview的方便所在?放弃吧。。

你有什么折衷的方法呢?

 

解决:

既然要求的分页不是太复杂,就用了<PagerTamplate>自定义分页,这样排序的问题就不需要考虑了。

并于此处找到相应方法:

当前页

1 <asp:Label ID="LabelCurrentPage" runat="server"
2 Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>

总页数

1 <asp:Label ID="LabelPageCount" runat="server"
2 Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>

首页,尾页,上一页,下一页

ContractedBlock.gifExpandedBlockStart.gif代码
1 <asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"
2 Visible="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">首页</asp:LinkButton>
3
4  <asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev" CommandName="Page"
5 Visible="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>
6
7  <asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"
8 Visible="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>
9
10  <asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page"
11 Visible="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">尾页</asp:LinkButton>

另外,我要的要求是里面有个文本框,既显示当前页,又可以通过一个按钮跳转到文本框里输入的页码,却不知道如何传入这个页码,

本来应该产生如下形式的代码

1 CommandName="Page" CommandArgument="xxx"

 这个commandArgument我试过用<%# (((GridView)Container).FindControl("") as TextBox).Text %>的方式,结果显然得不到你手动输入的页码,最后还是简单地用了一个onClick来完成这个要求,即在onClick里面设置该button的 CommandName="Page" CommandArgument=页码文本框的值,搞定。

页面:

ContractedBlock.gifExpandedBlockStart.gif代码
1 <asp:TextBox ID="txtcurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"
2 Width="20px" MaxLength="3" CssClass="txttopage"></asp:TextBox>
3  <asp:Button ID="btngopage" runat="server" Text="go" OnClick="getCustPage" OnClientClick="return ToPage();" />

 

后台:

ContractedBlock.gifExpandedBlockStart.gif代码
1 protected void getCustPage(object sender, EventArgs e)
2 {
3 Button btn = sender as Button;
4 btn.CommandName = "Page";
5 btn.CommandArgument = ((btn.NamingContainer as GridViewRow).FindControl("txtcurrentPage") as TextBox).Text;
6 }

 

========其它===========

1,分页那一行叫做BottomPagerRow,需要到这一行找控件的话要注意。而且请注意,这一行是froeach gridview.rows找不到的,我曾经这样试过,结果无功而返。

2,所以,可以这样让分页行一直保持存在(有时候确实有这样的需求),响应前台GridView的onPreRender方法

ContractedBlock.gifExpandedBlockStart.gif代码
1 protected void renderview(object sender, EventArgs e)
2 {
3 GridViewRow gvr = (sender as GridView).BottomPagerRow;
4 if (gvr != null)
5 {
6 gvr.Visible = true;
7 }
8 (gvr.FindControl("ddlPageSize") as DropDownList).SelectedValue = gridList.PageSize.ToString();
9
10 PagedDataSource ps = new PagedDataSource();
11 ps.DataSource = ods.Select();
12 (gvr.FindControl("lblTotalRecord") as Label).Text = ps.DataSourceCount.ToString();
13
14 this.hidcurpage.Value = (gridList.PageIndex + 1).ToString();
15 }

同时可以看到,因为gridview没有统计记录条数的方法,结果我还是用了pageddatasource,另外,数据重绑的时候貌似分页行的控件状态都刷新了,那么我只有在prerender的时候把它们全绑进去,如12,14行。

3,同1,表首行就应该是HeaderRow,总而言之,就是DataControlRowType的几个类型(DataRow,EmptyDataRow,Footer,Header,Pager,Separator)

转载于:https://www.cnblogs.com/walkerwang/archive/2010/04/27/1722325.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当年年仅18岁韩寒舌战群儒,受尽冷嘲热讽!

https://weibo.com/3251967895/Gk4nNu9Fr转载于:https://www.cnblogs.com/bakblog/p/9287258.html

在朋友圈求助的NTP问题~

之前朋友圈求助的问题最后是我一个朋友尝试了一天的配置「这个配置尝试的过程需要技术基础&#xff0c;但是不管如何的技术基础都是需要去不断的尝试的」&#xff0c;终于找到了方法&#xff0c;所以~我给他们送了秋天的第一杯奶茶~「是他们是因为他们都是一群我很喜欢的同事」…

JRE和JDK 1.3、1.4、1.5(5.0)、6.0 各版本下载地址大全(J2SDK,JavaSE JavaEE)

本文转载&#xff08;http://hi.baidu.com/y66901356/blog/item/7d32bf0abf7d7c3ab0351d39.html&#xff09;本人绝对支持原创&#xff01;&#xff01;&#xff01;Java SE Development Kit(JDK)和Java Runtime Envirnment(JRE)1.3、1.4、1.5(5.0)、6.0 各版本下载地址大全 (J…

聊聊身边的嵌入式,英语学习利器点读笔

家里有小孩的朋友&#xff0c;可能对下面的这款产品不陌生。点读笔&#xff0c;一个会发声的电子产品&#xff0c;我当时为了给孩子做英语启蒙&#xff0c;买了小达人点读笔(上图最下方那个&#xff0c;另外两个分别是宝玩英语和巧虎配套的点读笔)&#xff0c;用了好几年了&…

gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...

//定义一些常量var x_PI 3.14159265358979324 * 3000.0 / 180.0;var PI 3.1415926535897932384626;var a 6378245.0;var ee 0.00669342162296594323;/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* param bd_lon* param bd_lat* returns {…

javascript 15位和18位身份证的正则表达式及其验证

1、简单的正则表达式&#xff1a; &#xff08;1&#xff09;preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)&#xff08;2&#xff09;preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3}) (\d|X)?$/",$id_card)&#x…

EasyUI_datagrid

案例一丶jquery.easyui.min.js:10631 Uncaught TypeError: this.renderEmptyRow is not a function 解决方法&#xff1a;datagrid记录为空就会报错。是easyui里没处理return 空的方法。需要进行添加一些东西。具体我也不清楚&#xff0c; 案例二丶清除datagrid右侧空白区域 查…

三枚硬币自制收音机

大家好&#xff0c;我是记得诚。我们称这个收音机为三个硬币收音机是因为我们使用了三个硬币作为锚点&#xff0c;连接收音机各个部件&#xff0c;这将使我们的制作过程变得极为简单。在这个收音机中我们使用了一个特殊的10晶体管集成电路&#xff0c;使最后做出的收音机效果非…

clickhouse 增量更新_ClickHouse王炸功能即将来袭?

众所周知&#xff0c;MySQL 的用户群体很大&#xff0c;为了能够增强数据的实时性&#xff0c;很多解决方案会利用 binlog 将数据写入到 ClickHouse。为了能够监听 binlog 事件&#xff0c;我们需要用到类似 canal 这样的第三方中间件&#xff0c;这无疑增加了系统的复杂度。在…

在批处理文件中启动MediaPlayer播放制定文件

我们知道在运行可以使用wmplayer指令来启动一个MediaPlayer&#xff0c;如果需要让MediaPlayer播放制定的文件或是一个制定的流媒体发布点&#xff0c;我们可以使用如下的命令格式wmplayer “mms://WIN-FW.MiGu.com/12530″wmplayer “C:\wmpub\wmroot\legacy_content_clip.wmv…

双重检查锁实现单例模式的线程安全问题

一、结论 双重校验锁的单例模式代码如下&#xff1a; public class Singleton {   private static Singleton singleton; private Singleton() {} public static Singleton getSingleton() {     if (singleton null) { // 1       synchronized (Singleton.clas…

摇杆控制方向原理_为工业安全守好”门”!各种方向的控制阀原理图大集合

单向的、换向的....你想了解的方向控制阀都在这里了&#xff01;方向控制阀门液压阀是用来控制液压系统中油液的流动方向或调节其流量和压力的。方向控制阀作为液压阀的一种&#xff0c;利用流道的更换控制着油液的流动方向。单向型方向控制阀是只允许气流沿一个方向流动的方向…

对于新生代农民工,你有什么想说的?

昨晚上这个新闻很多人转&#xff0c;但是可能很少有人知道他的链接出处&#xff0c;链接来自于http://www.mohrss.gov.cn/SYrlzyhshbzb/jiuye/gzdt/202108/t20210816_420736.html我记得我还在上小学的时候&#xff0c;我们家有干不完的农活&#xff0c;暑假每天都要下田干活&am…

谁是经营之神

—北京维富友携手北京服装学院开展服装ERP沙盘大赛时间4月21日&#xff0c;地点北京服装学院&#xff0c;参加人数35人&#xff0c;参加人员北京维富友软件公司高级讲师、服装学院教师和同学共35人。目的&#xff1a;为了让学生更好的掌握服装企业管理和盈利管控&#xff0c;北…

在Android初次的前期学习中的二个小例子(2)

Hello13:SQLite数据库 一、简述SQLite的概念和主要特性SQLite是一个轻量级的关系型数据库&#xff0c;运算速度快&#xff0c;占用资源少&#xff0c;使用非常方便&#xff0c;支持SQL语法标准和数据库事务原则。相对于SharedPreferences使用文件保存数据&#xff0c;SQLite具有…

access 增加字段 工具_Java效率工具之Lombok

作者&#xff1a;LiWenD正在掘金来源&#xff1a;https://juejin.im/post/5b00517cf265da0ba0636d4b上一篇&#xff1a;数据库查询速度优化之解决技巧还在编写无聊枯燥又难以维护的POJO吗&#xff1f;洁癖者的春天在哪里&#xff1f;请看Lombok&#xff01;在过往的Java项目中&…

一文读懂 | 进程并发与同步

并发 是指在某一时间段内能够处理多个任务的能力&#xff0c;而 并行 是指同一时间能够处理多个任务的能力。并发和并行看起来很像&#xff0c;但实际上是有区别的&#xff0c;如下图&#xff08;图片来源于网络&#xff09;&#xff1a;concurrency-parallelism上图的意思是&a…

快速完成和读懂测试计划

每个项目测试计划都会不一样&#xff0c;但是一般情况下&#xff0c;每个公司都会有相应的模板&#xff0c;尤其是项目很频繁的公司&#xff0c;相对应的模板应该就更全面&#xff0c;并且更容易修改&#xff0c;更能适应新项目。 并且&#xff0c;经常接触测试计划的人可能会察…

rust卡领地柜权限_RFID智能医疗耗材柜,上海智能高值耗材柜,国药智能医用耗材柜...

近几年因为我们的医疗改革一直在进步并改革&#xff0c;国家对我们的医疗方面的补助也有了明显的加大投入&#xff0c;与此同时让各种公立私立医院如雨后春笋般层出不穷&#xff0c;各大医院为了在医疗市场占有一席之地&#xff0c;都在各个方面开始想办法提升自己医院的水准。…

刚接触电子时,有过哪些百思不得其解的问题?

青少年时期&#xff0c;刚接触电子时&#xff0c;出于好奇&#xff0c;对这方面的东西也比较关注&#xff0c;但同时也衍生了一些百思不得其解的疑问&#xff0c;比如...01物理书里说大地是导体&#xff0c;那为什么我的小灯珠却不亮&#xff01;&#xff1f;02初三时学了物理的…