Yii:如何在CGridView列表控件使用了Ajax方式更新数据的情况下返回前一个页面
2013-01-24 02:57
1041 查看
Yii框架提供的CGridView用来展示表格数据,具有较好的过滤/排序/分页功能。
但是你可能会遇到下面这样的问题:
如果存在多页文章数据,在CGridView界面上浏览到后面的文章页,然后查看某个文章的信息,
这个时候再回退的时候,总是返回到列表的第一页,而不是刚才的历史页面。
解决方法有两个:
1个是禁用ajax效果,设置CGridView ajaxUpdate属性为false; 这个不是我想要的,因为牺牲了性能。
第2个方法是升级到Yii的高版本,>=1.1.12, 提供了一个enableHistory功能,
把列表视图(List.php)中把该CGridView的enableHistory属性设置为true, 再进行页面操作时,你会发现浏览器中的URL是带了ajax参数的完整请求。
然后在查看视图(View.php)中使用如下的语句达到返回历史页面的效果:
再进一步,如果要在这个查看页面进行审核操作,希望审核操作后也退回列表历史页面,
那么单单使用urlReferrer就不行了,因为它对于审核动作的处理逻辑而言记录了查看页面的url。
可以在查看页面中放一个隐藏字段:
<input type="hidden" value=<?php echo Yii::app()->request->urlReferrer;?> id="backurl" name="backurl">
也就是把列表历史页面的路径做为请求参数传递给actionApprove, 那么在控制器的审核动作的处理完后就可以重定向到backurl.
iefreer
但是你可能会遇到下面这样的问题:
如果存在多页文章数据,在CGridView界面上浏览到后面的文章页,然后查看某个文章的信息,
这个时候再回退的时候,总是返回到列表的第一页,而不是刚才的历史页面。
解决方法有两个:
1个是禁用ajax效果,设置CGridView ajaxUpdate属性为false; 这个不是我想要的,因为牺牲了性能。
第2个方法是升级到Yii的高版本,>=1.1.12, 提供了一个enableHistory功能,
把列表视图(List.php)中把该CGridView的enableHistory属性设置为true, 再进行页面操作时,你会发现浏览器中的URL是带了ajax参数的完整请求。
然后在查看视图(View.php)中使用如下的语句达到返回历史页面的效果:
<div class="Action"> <?php echo XHtml::link(Yii::t('Trade','Back'), Yii::app()->request->urlReferrer); ?> </div>
再进一步,如果要在这个查看页面进行审核操作,希望审核操作后也退回列表历史页面,
那么单单使用urlReferrer就不行了,因为它对于审核动作的处理逻辑而言记录了查看页面的url。
可以在查看页面中放一个隐藏字段:
<input type="hidden" value=<?php echo Yii::app()->request->urlReferrer;?> id="backurl" name="backurl">
也就是把列表历史页面的路径做为请求参数传递给actionApprove, 那么在控制器的审核动作的处理完后就可以重定向到backurl.
public function actionApprove() { //do your data update logic here //then redirect to history list page if(isset($_POST['backurl'])) $this->redirect($_POST['backurl']); }
iefreer
相关文章推荐
- 在ASP.NET AJAX中,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时,这就需要在Content-page中使用ScriptMa
- Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本
- Struts2引用的jar包版本为2.0.9的,该版本没有json包,如何使用ajax返回json数据到页面
- 客户端使用Ajax访问struts2 , struts2如何返回一个json数据!json-lib与flexjson
- 使用ajax,如何在页面端将返回数据提取出来
- Ajax使用Action中返回的Json数据的完整实例(二):action内将一个实体对象转化为json并返回
- jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
- Asp.Net 开发之(1) ---如何自动加载数据到页面或更新数据到数据容器中(基础控件)
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 一个div中许多列表,使用全局,将数据显示到页面
- jsp页面ajax后台取得json数据更新到页面下拉列表
- 如何把aspx页面中的某个控件输出成html页面(例如把一个页面中的datagrid数据输出成html格式的页面保存)
- 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- 使用 Repeater方式和完全静态页面使用AJAX读取和提交数据
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 使用EF Model First创建edmx模型,数据库有数据的情况下,如何同时更新模型和数据库
- jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表