现在我已经在搜索功能中设置了静态页面大小,但是现在我需要为用户创建下拉菜单以从前端更改页面大小。例如10,20,50,100。
我得到了代码,但是它用于yii以前的版本。
答案 0 :(得分:0)
如果必须这样做,我将使用以下方法。
layout
文本和summary
列表之间添加下拉列表,则可以在gridview的items
选项内调整下拉列表,或者将其添加到网格视图。像这张图片一样,您可以用div包装它,以便自己调整其CSS。主要要做的是将下拉列表的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)
在这里,我们将默认页面大小设置为等于我们创建的下拉菜单中的最小选项,否则在您更改下拉菜单时都会对其进行更新。
现在尝试更改下拉列表,您会看到它正常工作。希望这会有所帮助