1

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

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

4

1 回答 1

7

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

  • 为页面大小创建一个下拉菜单,layout如果您想要在summary文本和items列表之间调整下拉菜单,可以在 gridview 选项内调整下拉菜单,或者在 gridview 之前添加它。像这张图片,你可以用 div 包裹它来自己调整 CSS。

在此处输入图像描述

要做的主要事情是id将下拉列表包含在filterSelector选项中,以便每次过滤 gridview 时也会提交下拉值,并且每当您更改下拉列表时也会提交。

您的 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

  • 将该属性添加到safe您的规则中searchModel

    [['myPageSize'],'safe']

  • 然后search()用. SearchModel_ GridView您应该使用定义的新属性分配内部pageSize选项,但请确保在语句之后添加此行。query$dataProvider$this->load($params)

    见下文

      $dataProvider->pagination->pageSize = ($this->myPageSize !== NULL) ? $this->myPageSize : 10;`
    

在这里,我们将默认页面大小设置为等于我们创建的下拉列表中的最小选项,否则当您更改下拉列表时它会更新。

现在尝试更改下拉列表,您将看到它正在工作。希望这可以帮助

于 2018-08-31T16:33:58.460 回答