如何在yii2中动态显示pageSize?

时间:2018-08-31 11:02:07

标签: filter yii2 page-size

现在我已经在搜索功能中设置了静态页面大小,但是现在我需要为用户创建下拉菜单以从前端更改页面大小。例如10,20,50,100。

我得到了代码,但是它用于yii以前的版本。

1 个答案:

答案 0 :(得分:0)

如果必须这样做,我将使用以下方法。

  • 为页面大小创建一个下拉列表,如果希望在layout文本和summary列表之间添加下拉列表,则可以在gridview的items选项内调整下拉列表,或者将其添加到网格视图。像这张图片一样,您可以用div包装它,以便自己调整其CSS。

enter image description here

主要要做的是将下拉列表的id包含到filterSelector选项中,这样,每次网格视图被过滤时,下拉列表值也将被提交,并且每当您更改下拉菜单。

您的GridView如下所示

GridView::widget([
    'dataProvider' => $dataProvider,
    'layout'=>'{summary}'.Html::activeDropDownList($searchModel, 'myPageSize', [1 => 10, 2 => 20, 50 => 50, 100 => 100],['id'=>'myPageSize'])."{items}<br/>{pager}",
    'filterModel' => $searchModel,
    'filterSelector' => '#myPageSize',
    'columns'=>[
       // your column configurations.......
    ]
]);
  • 在searchModel中声明一个公共属性

    public $myPageSize

  • 将该属性添加到searchModel内的安全规则中

    [['myPageSize'],'safe']

  • ,然后在与search()一起使用的相对SearchModel中更新您的GridView方法。您应该在pageSize内为query的{​​{1}}选项指定已定义的新属性,但是请确保在$dataProvider语句之后添加此行。

    见下文

    $this->load($params)

在这里,我们将默认页面大小设置为等于我们创建的下拉菜单中的最小选项,否则在您更改下拉菜单时都会对其进行更新。

现在尝试更改下拉列表,您会看到它正常工作。希望这会有所帮助