如何在Yii2 GridView中启用和禁用排序?

rda*_*sha 20 sorting gridview yii2

如何在Yii2 GridView中启用和禁用排序?

例

Ali*_*our 38

您可以自定义列中的列DataProvider.例如,如果您ActiveDataProvider在自己中使用,则GridView可以指示可排序的列,如下所示:

$dataProvider = new ActiveDataProvider([
    'query' => Model::find(),
    'sort' => ['attributes' => ['column1','column2']]
]);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,只有column1column2是排序能.

您还可以禁用所有列的排序,如下所示:

'sort' =>false
Run Code Online (Sandbox Code Playgroud)

建议查看Yii2官方文档:类yii\data\Sort它定义它:

Sort表示与排序相关的信息. 当需要根据一个或多个属性对数据进行排序时,我们可以使用Sort来表示排序信息并生成可导致排序操作的适当超链接.


Ehs*_*veh 15

除了Ali的答案,对于聚合和相关列,您可以执行以下操作:

public function actionIndex()
{
    $dataProvider = new ActiveDataProvider([
          'query' => User::find()->joinWith('role'),
          'sort' => ['attributes' => [
                   //Normal columns
                   'username',
                   'email',
                   //aggregated columns
                   'full_name' => [
                        'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                        'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                        'default' => SORT_DESC
                   ],
                   //related columns
                   'role.name' => [
                        'asc' => ['user_role.name' => SORT_ASC],
                        'desc' => ['user_role.name' => SORT_DESC],
                        'default' => SORT_DESC
                   ],
              ],],
    ]);
}
Run Code Online (Sandbox Code Playgroud)

资料来源: http ://www.yiiframework.com/doc-2.0/yii-data-sort.html


小智 7

如果要禁用对特定列的gridview排序,请执行以下操作:

 [
     'attribute' => 'name',
     'enableSorting' => false
 ],
Run Code Online (Sandbox Code Playgroud)

通过使用 'enableSorting' => false


pa3*_*aka 6

您可以像这样在控制器中禁用排序:

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->sort->sortParam = false;
Run Code Online (Sandbox Code Playgroud)