如何在 yii2 中动态显示 pageSize?

Posted

技术标签:

【中文标题】如何在 yii2 中动态显示 pageSize?【英文标题】:How do I Dynamically show the pageSize in yii2? 【发布时间】:2019-02-06 09:42:30 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

为页面大小创建一个下拉列表,如果您想要在summary 文本和items 列表之间调整下拉列表,您可以在gridview 的layout 选项内调整下拉列表,或者将其添加到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

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

[['myPageSize'],'safe']

然后用GridView 更新您正在使用的相对SearchModel 中的search() 方法。您应该在 $dataProvider 内分配 querypageSize 选项并定义新属性,但请确保在 $this-&gt;load($params) 语句之后添加此行。

见下文

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

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

现在尝试更改下拉菜单,您会看到它起作用了。希望这会有所帮助

【讨论】:

以上是关于如何在 yii2 中动态显示 pageSize?的主要内容,如果未能解决你的问题,请参考以下文章

yii2 数据提供者 dataProvider

在yii2中设置动态时区

Yii2 分页

DataGridView 怎么实现动态分页?

python-tkinter如何打开动图(.gif)?

如何在不显示 ID 号的情况下使用 Yii2 Sluggable Behavior?