我正在为一位客户工作,他要求我为其网站(使用Yii编写)准备一个模块,其中包含以下功能:
3 4 5
并点击4
,该商品就会消失并显示数字6
,这意味着结果为3 5 6
。<<
和>>
箭头在项目列表中移动来回显示结果。我正在使用Yii,MySQL和jQuery开发它,因为这个生活列表我无法使用CPagination。我不是在问代码,只是一些指导原则,因为我第三次尝试这样做时迷路了。
有关系统的一些基础知识:
<<
或>>
时,我都会重新加载上一页/下一页(这显然不是问题。如果您在最后一页但没有要添加的项目更多,你只需要保留在那里。但是,如果你清空页面,我没有任何方法可以检测到并滚动一页。)正如您所看到的,如果没有分页按钮,这种麻烦会更容易,但是客户责任我把它们放进去。你会做什么?提前致谢
编辑:客户决定以随机的方式获得结果。没有更多的分页,所以问题已经消失。 @thaddeusmt的回答可能对我没什么帮助,但是我会认为它是有效的,因为它可能对其他有类似问题的人有用。干杯
答案 0 :(得分:2)
在我看来,CGridView或CListView应该基本上自动执行此操作。他们支持AJAX updating/paging开箱即用。
我假设您有一个类似于“actionMarkRead()”的AJAX操作,您在用户点击时会调用它。我假设这在某处设置了一些数据库字段,表示用户已“读取”该项。 要使用CListView,只需确保CDataProvider有condition
检查“读取”字段(可能要加入表格,我不知道你的是什么DB看起来像)。然后,当列表通过AJAX重新加载时,它将具有正确的页面数来表示CDataProvier查询返回的较少页数。
我刚测试了这个并且有效!
我测试它的方式是使用'ajaxUpdate'=>true,
设置CGridView。然后在我的CDataProvider中设置'pagination'=>1
以便于测试。然后我使用Controller中的默认AJAX actionDelete
来删除项目。每次我通过CGridView中的AJAX动作链接删除一个项目时,网格通过AJAX刷新,页面数量缩小1.似乎像魅力一样工作!
干杯,祝你好运!