小程序分页处理方案用POST应该怎么处理

2015年2月 总版技术专家分月排行榜第二
2015年2月 Web 开发大版内专家分月排行榜第一2015年1月 Web 开发大版内专家分月排行榜第一2014年12月 Web 开发大版内专家分月排行榜第一2014年11月 Web 开发大版内专家分月排行榜第一2014年10月 Web 开发大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。欢迎访问火车采集器客户帮助中心
服务时间:周一至周六 9:00-18:00
服务时间:周一至周六 9:00-18:00
post的分页简单说明
【作者:客服】【字号:
】【】【】
大家在采集列表分页的时候会遇到,点击下面的分页页面内容是改变了 ,但是浏览器地址却没有改变 ,
是吧 好奇怪是吧,是的,好奇怪, 这个种情况分页是post的 方式,今天我们来说下这个种情况 该如何获取分页
用这个网址来做例子
首先你要选项下用fiddler抓包 教程这里 好好看看 一定要会用 要不然 下面就没有办法做了 这个是简单的教程 只要帖子里说的会用 就可以了 如果你要学习具体的 可以在论坛搜索这方面的教程 这里自行解决
这里假设你已经掌握了 fiddler的使用了 我们开启fiddler然后点击下面的分页看下fiddler都抓到了什么
我们点击第三页 和第5页 抓包 看看分别获取什么
说明如上图 这样比较不好比较我们把结果保存的文本中来比较就很方便了 用按钮“View  in Notepad” 把结果保存到文本中来比较
按照 上图的说明我们找到ec_p的值就是分页,这里大家明白了吧
ec_crd=32&ec_p=5&id=1&pid=7&flag=1&sortType=&s_keyword=&s_minprice=&s_maxprice=
这些是提交的值 那采集器里如何设置呢 如下图
我们看到除了ec_p还有比的参数如ec_crd这些 那这些是什么呢
我们去页面源代码里找下我们以这个参数为例ec_crd 别的一样处理
这个源代码里的情况 我们最终要获取他的值也就是&32& 在采集如何获取呢
采集器里获取 在采集器里像这样的参数叫做post随机值分页,大伙并不陌生也许你正用着:DataGrid/GridView自带的分页也许你正用着:网上流传较广的AspnetPager分页控件也许你正用着:其它同事写的分页控件又也许:你正是那个写分页控件的人,如果是,现在的你是否回头看过自己当初的源码?感觉?
昨夜,花了两个小时左右,把一个2007年那会写的分页控件,重新优化改造了一下:cs代码大小从原来的14K,缩减到4K。原来的分页控件源码:
在看以下正文之前,还是希望能看一下原来的分页控件的源码,这样才能感叹下改造前后的巨大落差。
目前分页控件,据个人所知的,有几下几种实现情况:
1:Post篇 [生成N个按钮,每个按钮点击时产生一个Post事件引发分页]
常见方式:控件实现复杂,内渗杂sql语句。本文方式:反射机制,与sql无关。遥想当年是配合了atlas的updatepanel实现的无刷新
2:Get篇 [生成N个链接,每个链接点击时产生一个Get事件引发分页]
方式一:链接分页,常见于参数后面的page=N方式二:链接分页,Url重写,常见于url参数为 /page/N方式三:脚本分页,无刷新,链接都采用onclick="js函数"引发ajax回调异步分页。
在具体写实现代码之前,我们上几张图片看一下效果:
昨夜把代码上传到网络空间时,忘了把样式也传上去,早上下载后发现没样式。所以样式是自己临时加上去的,大伙自己感知一下效果了就可以了。
下面开始分页控件实现具体步骤:
1:新建一个用户控件:Pager
2:控件前台html
&table id="pager" border="0" cellpadding="0" cellspacing="0" width="100%"&
&asp:LinkButton ID="lbtnFirstLink" runat="server" CausesValidation="false" OnClick="ClickEvent"&首页&/asp:LinkButton&
&asp:LinkButton ID="lbtnPrevPage" runat="server" CausesValidation="false"
OnClick="ClickEvent"&上一页&/asp:LinkButton&
&asp:Repeater ID="rptNum" runat="server" OnItemCommand="rptNum_ItemCommand"&
&ItemTemplate&
&asp:LinkButton ID="lbtnNum" runat="server" CausesValidation="false" CommandArgument='&%# Container.DataItem %&'
CssClass='&%# Convert.ToInt32(Container.DataItem)==PageIndex?"num_yellow":"num_blue"%&' Width="15"&&%# Container.DataItem %&
&/asp:LinkButton&
&/ItemTemplate&
&/asp:Repeater&
&asp:LinkButton ID="lbtnNextPage" runat="server" CausesValidation="false"
OnClick="ClickEvent"&下一页&/asp:LinkButton&
&asp:LinkButton ID="lbtnLastPage" runat="server" CausesValidation="false"
OnClick="ClickEvent"&尾页&/asp:LinkButton&
&asp:HiddenField ID="hfBindName" runat="server" /&
&/tr&&/table&
A:用了表格布局,简单,想换div的自己改了。B:用了五个LinkButton,其中数字的一个用Repeater循环N个数字出来C:最后加了一个隐藏域,用于保存绑定的方法名称。
D:数字里有两个样式用于为数字赋样式,样式到示例时再写出来吧
E:首页/上一页/下一页/尾页,用的点击事件都是同一个函数。
F:Repeater有个OnItemCommand事件,点击数字要重新绑定的。
3:后台cs代码
A:几个属性
private int _PageI
public int PageIndex
get{if (_PageIndex == 0){ _PageIndex = 1;}return _PageI}
set{ _PageIndex =}
private int _PageS
public int PageSize
get{if (_PageSize == 0){_PageSize = 1;}return _PageS}
set{ _PageSize =}
private int _C
public int Count
get{return _C }
set { _Count = }
/// &summary&
/// 该方法名称修饰符为需为public
/// &/summary&
public string BindName
get{return hfBindName.V}
set{hfBindName.Value = }
PageIndex:第几页PageSize:每页多少条Count:记录总数BindName:绑定的方法名称,用于反射绑定数据
B:Page_Load做点什么
private void Page_Load(object sender, System.EventArgs e){
if (!Page.IsPostBack)
BindPager();//绑定分页数字
第一次绑定时,界面已实现绑定数据,所以只需要绑定分页的数字就行了
C:绑定分页数字
public void BindPager(){
int pageCount = (Count % PageSize) == 0 ? Count / PageSize : Count / PageSize + 1;//页数
SetButtonEnable(pageCount);//下面四个按钮可用状态设置
BindPageNum(pageCount);//绑定循环数字}
1:从记录总数和页面大小计算出有多少页,这个少不的。2:根据当页的页数和当前页面索引,设置下“首页/下一页/上一页/尾页”的可用状态3:根据当前的页数绑定一下循环的数字。
函数分解:SetButtonEnable [设置按钮可用状态及参数赋值]
private void SetButtonEnable(int pageCount){
lbtnFirstLink.Enabled = PageIndex != 1;
lbtnPrevPage.Enabled = PageIndex != 1;
lbtnNextPage.Enabled = PageIndex != pageC
lbtnLastPage.Enabled = PageIndex != pageC
lbtnFirstLink.CommandArgument = "1";
lbtnPrevPage.CommandArgument = (PageIndex - 1).ToString();
lbtnNextPage.CommandArgument = (PageIndex + 1).ToString();
lbtnLastPage.CommandArgument = pageCount.ToString();}
1:如果当前页为第1页:首页/上一页状态不可用2:如果当前页为最后1页:下一页/尾页状态不可用3:顺路把几个页索引值赋给CommandArgument
函数分解:BindPageNum [绑定分页数字]
protected void BindPageNum(int pageCount){
int start = 1, end = 10;
if (pageCount & end)//页数小于10
end = pageC
start = (PageIndex & 5) ? PageIndex - 5 :
int result = (start + 9) - pageC//是否超过最后面的页数
if (result & 0)
end = pageC
start -=//超过后,补差
end = start + 9;
ReBindNum(start, end);}
1:由于绑定的数字,在往后页数点击时,页数数字需要进行变化,所以需计算好开始数字和结束数字2:根据开始数字和结束数字进行绑定
函数分解:ReBindNum [循环绑定数字]
private void ReBindNum(int start, int end){
int[] rows = new int[end-start+1];//这里之前写10,修正为end-start+1。
int index = 0;
for (int i = i &= i++)
rows[index] =
rptNum.DataSource =
rptNum.DataBind(); }
1:这里用int[]数组循环数字来绑定到Repeater2:界面绑定用&%# Container.DataItem %&方式进行对应
D:反射绑定[简洁重点函数]
private void ReBindData(string pageIndex){
PageIndex = int.Parse(pageIndex);
object obj = base.Parent is HtmlForm ? this.Page : base.P
MethodInfo mi = obj.GetType().GetMethod(BindName);
mi.Invoke(obj,null);
BindPager();}
1:重点在于区分,分页控件是直接在页面中使用,还是在控件套分页控件的方式使用2:获取绑定数据的方法,重新调用一下3:重新绑定分布数字
F:首页/上一页/下一页/尾页,按钮事件
protected void ClickEvent(object sender, EventArgs e){
ReBindData(((LinkButton)sender).CommandArgument.ToString());}
G:分页数字,按钮事件
protected void rptNum_ItemCommand(object source, RepeaterCommandEventArgs e){
ReBindData(e.CommandArgument.ToString());}
三:示例代码,和
1:html代码
&%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagerDemo.aspx.cs" Inherits="PagerDemo" EnableTheming="false" %&&%@ Register Src="UserControls/Pager.ascx" TagName="Pager" TagPrefix="uc1" %&&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&&html xmlns="http://www.w3.org/1999/xhtml" &&head runat="server"&
&title&路过秋天 分页控件演示&/title&
&style type="text/css"&
#pager {color:White;}
#pager a{color:White;text-decoration:none; }
.num_blue{color:White;border:solid 1px Blue;text-align:center;}
.num_yellow{color:while;border:solid 1px Yellow; text-align:center;}
&/style&&/head&&body style="background-color:Bcolor:W"&
&form id="form1" runat="server"&
&div&&asp:GridView ID="gvUsers" runat="server"&&/asp:GridView&&br /&
&uc1:Pager ID="Pager1" runat="server" /&
&/form&&/body&&/html&
2:后台代码
protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack)
LoadData();
}}public void LoadData(){
MAction action = new MAction(TableNames.Users);
MDataTable mTable = action.Select(Pager1.PageIndex, Pager1.PageSize, "", out count);
action.Close();
gvUsers.DataSource = mT
gvUsers.DataBind();
Pager1.BindName = "LoadData";
Pager1.Count =}
1:BindName为绑定数据的方法名称,该方法名称的修饰符号需为public2: 默认的分页PageSize可自行修改默认值3: 前面html也可设置为:&uc1:Pager ID="Pager1" runat="server" PageSize="20" /&
3:最终效果
如正文一开始发的五张图片一致
以上教程中,以包含所有代码,包括前后台,所以不另提供打包下载。有兴趣的来客欢迎讨论留言。
源码下载地址:
本文已收录于以下专栏:
在Web中,以前写过相关的分页控件的实例教程,如: 分页控件 实战 Post篇 (包源码的)
在Winform中,分页有时候也是必不可少的一项,因此, 新手Mark一下有时候是必要的。
截图:使用JPage实现分页效果图
第一步:加载JPage插件(相关资源文件和Js代码)
截图所示:
第二步:编写相关j...
快乐高效的生活 LCL https://github.com/luomingui
首页新随笔订阅管理
随笔 - 215
评论 - 113
1、官方网站
http://laypage.layui.com/
2、示例demo
layPage demo
//好像很实用的样子,后端的同学再也不用写分页逻辑了。
之前写的,很凌乱,而且,几乎不粘代码,这不便于理解和也无法直接寻找可用代码。以后的文章会尽量引入代码实例。
这次需要一个翻页控件。之前webform直接拖个aspnetpager,写写前台...
通过简单配置参数,在页面底端显示分页控件,每页显示10条记录。
运行结果:
涉及到的文件:
/source/class/table/table_g...
一般开发绑定数据的时候,Repeater控件是非常好用的控件,但是很多.net开发人员苦恼于无法分页,于是开发一个基于Repeater的分页控件,现在拿出来和大家一起分享分享。写得不好大家可以尽管拍砖...
需要做什么?
1:分页控件需要向后台发送请求,发送的参数包括当前页,每页显示数量,查询条件;并且获取数据加载到当前页面;
2:进行修改删除操作的时候能...
一、AspNetPager介绍:
分页是Web应用程序中最常用到的功能之一,在 ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridVi...
关于AspNetPager分页控件的应用,需要引用dll文件
HorizontalAlign="left"
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)php分页不用get用post代码实例
】 &&浏览:
&a&href='&?=$_SERVER['PHP_SELF'];?&?page=1'&1&/a&
&a&href='&?=$_SERVER['PHP_SELF'];?&?page=2'&2&/a&
&form&id="myform"&method="post"&name="myform"&action="&?=$_SERVER['PHP_SELF'];?&"&
&input&type="hidden"&name="page"&id="page"&value=""&/&
&a&href="#"&onclick="mylink(1)"&1&/a&
&a&href="#"&onclick="mylink(2)"&2&/a&
&script&language="java script"&
function&mylink(page)&
&&&&document.getElementById('page').value&=&page;
&&&&document.myform.submit();
echo&'&br&/&get&page='&.&$_GET['page'];
echo&'&br&/&post&page='&.&$_POST['page'];
【】【】 【】post查询后分页 再指定跳转到某一页如何实现 - ThinkPHP框架
大家好,我用的3.1,数据列表实现了,也实现了查询后的数据翻页,但是我还想再查询后的数据后面再加一个指定的页面跳转,比如查询后的数据由5页,默认是第一页,我想在第一页直接跳转到5页如何实现?
就是在跳转到某页面的时候 把查询的参数带上。。。。
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

我要回帖

更多关于 vue分页处理 的文章

 

随机推荐