如何在yii2中动态显示pageSize?

问题描述 投票:0回答:1

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

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

filter yii2 page-size
1个回答
0
投票

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

  • 为页面大小创建下拉列表,如果需要在layout文本和summary列表之间或在gridview之前添加它,可以调整gridview的items选项内的下拉列表。像这个图像你可以用div包装它来调整他自己的css。

enter image description here

要做的主要事情是将下拉列表的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
  • 将该属性添加到searchModel中的安全规则 [['myPageSize'],'safe']
  • 然后在你使用search()的相对SearchModel中更新你的GridView方法。您应该在pageSize中指定query$dataProvider选项并定义新属性,但请确保在$this->load($params)语句后添加此行。 见下文 $dataProvider->pagination->pageSize = ($this->myPageSize !== NULL) ? $this->myPageSize : 10;`

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

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

© www.soinside.com 2019 - 2024. All rights reserved.