引子
小博,hisune.com开通了https了!现在通过http访问默认会自动跳转到https,瞬间有种高大上的感觉有木有?
下面步入今天的正题:
默认yii2的gridview或yii2-grid都是没有每页显示条数的参数配置的,我们想要的只是一个简单的下拉框select,用来让用户选择自己的每页记录条数。下面是我的解决办法。
解决办法
官方文档
1.先去官方文档http://www.yiiframework.com/doc-2.0/yii-grid-gridview.html看gridview的参数,发现了这个东西:http://www.yiiframework.com/doc-2.0/yii-grid-gridview.html#$filterSelector-detail
Additional jQuery selector for selecting filter input fields
选择过滤器的字段附加的jQuery选择器。
修改view
开始修改,先对view下手:
views/*/index.php
// \yii\web\Request用来获取当前分页的值,让前端选中。如果没有传,则读取$dataProvider中的分页配置,让前端选中。
$request = new \yii\web\Request;
echo Html::dropDownList(
'per_page',
isset($request->get()['per_page']) ? $request->get()['per_page'] : $dataProvider->getPagination()->pageSize,
[10 => 10, 20 => 20, 50 => 50, 100 => 100]
);
// filterSelector加入后,改select的change将会被监听并将值传入后端。
// filterSelector还支持多个selector,例如:'filterSelector' => 'select[name="per_page"],input[name="xxx"]'
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'filterSelector' => 'select[name="per_page"]', // 关键参数,The key!
// ....
=?>
修改search model
model/search/*
的 public search function
// 如果有传过滤参数per_page,则设置$dataProvider的Pagination
isset($params['per_page']) && $dataProvider->setPagination(['pageSize' => $params['per_page']]);
搞定,刷新你的页面看效果吧!It works!
如果您觉得您在我这里学到了新姿势,博主支持转载,姿势本身就是用来相互学习的。同时,本站文章如未注明均为 hisune 原创 请尊重劳动成果 转载请注明 转自: 为yii2的gridview或yii2-grid增加每页条数select下拉框 - hisune.com
0 Comments