Yii2.0中分页的一些总结——Yii\grid\GridView

折腾了一下午,哦不,是快一天了,都六点了,先写一下总结,再去吃饭吧,不然待会回来忘光了懒的写了。

一、关于GridView的分页,搜索了yiichina和yiiframework,以及百度,都没找到自己想要的结果,可能是没找到吧,抑或真的还没遇到这个问题。

首先,我要改变底部分页组件的样式,正常是需要它的class,然后写样式,匹配一下,显示成功。可是,现实是我用了一些UI框架,设它的分页组件的class的名称为“am-pagination”,它的样式class不能说是固定的,但是该起来也麻烦,因为各种关联,而且调试CSS是一件及其麻烦的代志。所以,保留UI框架中的关于分页组件的class的命长不变,修改GridView中的分页的class名称“am-pagination”为,使其和UI的分页class名字一样。

怎么修改呢,前面说了,没找到自己想要的结果就是,没找到该怎么修改,有的也都是关于Yii1.1.x的GridView的使用方法。直接贴视图中GridView的代码,看注释:


如上图,关于分页组件的设置主要是在pager里面搞定,分页的组件主要是跟yii\widgets\LinkPager类有关,pager中的参数就是用来设置LinkPager中的属性,然后调用render显示。花了这么久搞定这个,顿时有两点感悟:

    1. 英语还是要好好学习,不想看书的话,也可以强制自己多看看英文版的参考,如yiiframework中的内容,原汁又营养啊。

    2. 一些东西还是先好好学学理论,再去实践比较好,不然没了理论的指导,实践的道路总是那么的曲折坎坷。

忘了说,以上分页还有一个地方,控制器那边的,正常只需要对pageSize设置一下就ok:


二、一些列的自定义,比如最后一列——ActionColumn列,也是源于自定义的需要吧。我要把自带的那三个view,update,delete图标改成按钮等样式。如图:


不知道这个能不能跟上述的分页一样,在视图页面通过类似于template的参数修改,我还没试过,有会的小伙伴可以回帖分享一下。我的方法是直接自定义了一个新的ActionColumn类,继承它,重写类里面的函数,部分代码如下图:


它的父类,也就是ActionColumn,关于这个函数也是这么干的,也是这么多的代码。顺便贴一下ActionColumn中这个函数的部分代码吧:


通过以上两个图的对比,应该可以很清楚的设置了Action列也就是“操作”这列的内容样式了。

解决过程中有参考了一些网站:

    http://www.yiichina.com/tutorial/92

    http://www.yiichina.com/tutorial/93

欢迎评论交流。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于 YiiYii2 GridView 控件,实现全选和批量操作非常简单。下面是一些技巧和小结: 1. 实现全选 在 GridView 的头部添加一个复选框即可实现全选功能。代码如下: ```php <?= $form->field($searchModel, 'id')->checkbox(['class' => 'select-on-check-all']) ?> ``` 其,`select-on-check-all` 是一个自定义的 CSS 类,用于绑定全选的事件。在 JavaScript 文件,可以这样实现: ```javascript $('.select-on-check-all').on('click', function() { $('input[type="checkbox"]').prop('checked', this.checked); }); ``` 2. 批量操作 要实现批量操作,我们需要先将选的项的 ID 收集起来,然后将它们一起传递给后端进行处理。代码如下: ```php <?= Html::a(Yii::t('app', 'Delete selected'), ['bulk-delete'], [ 'class' => 'btn btn-danger', 'data' => [ 'confirm' => Yii::t('app', 'Are you sure you want to delete these items?'), 'method' => 'post', ], ]) ?> ``` 在这个例子,我们创建了一个按钮,当用户点击它时,将调用 `bulk-delete` 动作进行批量删除。在 JavaScript 文件,可以这样实现: ```javascript $('a[data-confirm]').on('click', function() { var ids = $('input[type="checkbox"]:checked').map(function() { return $(this).val(); }).get(); if (ids.length > 0) { var message = $(this).data('confirm'); if (!confirm(message)) { return false; } $('<input>').attr({ type: 'hidden', name: 'ids', value: ids.join(',') }).appendTo($(this).closest('form')); } }); ``` 这段代码会在用户点击批量操作按钮时,收集选的项的 ID 并将它们作为一个名为 `ids` 的表单字段提交给后端。在后端,我们可以通过 `Yii::$app->request->post('ids')` 获取这个值。 以上就是 YiiYii2 GridView 的全选和批量操作的实现方法。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值