想在CGridView中分页按钮点击事件上添加jquery遮罩层

请教大家一下:如题

我想在所有的grid表单分页按钮上加上一个事件

就是:点击下一页,页面开始遮罩,然后等到grid ajax执行完毕页面显示下一页内容后,遮罩去掉,

就是给用户一个页面正在处理中的这样一个效果

由于我这个表中数据有百万条,用grid分页很吃力,而且点击下一页,页面相应了足足有10多秒,才加载到下一页内容,这样点击分页很慢,

就想用户点击下一页时,用jquery显示一个遮罩的div

我知道CGridView中有beforeAjaxUpdate和afterAjaxUpdate,但是我程序里面有很多个表单grid分页,难道每个页面view里面都要加上这两个js回调处理函数吗,太繁琐了吧,不知道有没有好的方法,

请教大家一下如果修改Yii底层的的方法才能实现这种效果,或者yii本身有这种配置?? :unsure:

既然你自己都找出这种方案了 那么解决就简单多了:

自己实现CGridView的子类 放一个目录(自己建立或者干脆就放components目录下面这样可以自动导入)然后全项目搜索替换 ‘zii.widgets.grid.CGridView’ => ‘appliction.components.MyGridView’

可以多些参数 避免替换错了 不要光替换CGridView 到MyGridView 这样容易出问题 这种替换字符串越多越准确

现在基本上所有的IDE都支持这种全项目内的搜索替换功能 :lol: 祝你好运!

之前看过你的帖子,首先很感谢你,呵呵

我之前想到过这么替换,可是太繁琐了,虽然有IDE工具,我项目里面有太多的grid view 怕以后不想要遮罩,想改回来的话就悲剧了

现在想还是修改Yii底层的CGridView类,修改一个都变过来了,呵呵,懒人就这了……

暂时也没想到其他好的方法了,

谢谢了……

祝工作顺利 :rolleyes:

还有一个问题,

就是我在view里面

$this->widget(‘zii.widgets.grid.CGridView’,array(

……

‘dataProvider’=>$userModel->search();

)

就是我这个$userModel有百万条记录,

这个view分页特别慢,

有没有优化$userModel->search()的方法,不知道Yii里面怎么优化这种情况??

ar本身就会占大量内存 在生产环境中 一定要开启schema缓存(减少不必要的查询)。(搜索可以用原生sql做 不要用ar) 还有大数据量不知道别人怎么做 我一般会这样考虑 搜索一般都用专业搜索方案的比如 xunSearch Luncece solr 他们内部都自带分页功能的 当常见的sql方案(比如建索引等 查询优化等)用完了 就需要考虑这些专业方案了

另外对你 直接改CGridView的做法并不赞同 影响升级的 一升级直接给你覆盖掉了

我上面说的全局替换并不影响的 不想要遮罩了 在修改那个类 或者再用IDE改回来 这个几分钟的事 再说不要想那么远 还没到那个时候 你是提前给自己找纠结 :D

前几天没来论坛里,呵呵,今儿个看到你的回复,很感谢

我最后还是用IDE替换了, :(

这几天我们在各种调试怎么优化分页速度,效果很不尽人意

也参与了你的意见,在试试吧,呵呵