web-dev-qa-db-fra.com

Comment activer et désactiver le tri dans Yii2 GridView?

Comment activer et désactiver le tri dans Yii2 GridView?

Example

19
rdanusha

Vous pouvez personnaliser le tri des colonnes dans votre DataProvider. Par exemple, si vous utilisez ActiveDataProvider dans votre GridView, vous pouvez indiquer des colonnes triables comme ci-dessous:

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

Dans l'exemple ci-dessus, seuls column1 Et column2 Sont triables.

Vous pouvez également désactiver le tri pour toutes les colonnes comme ci-dessous:

'sort' =>false

Il est suggéré de jeter un œil au document officiel de Yii2: Classe yii\data\Sort Comme il le définit:

Trier représente les informations pertinentes pour le tri. Lorsque les données doivent être triées selon un ou plusieurs attributs, nous pouvons utiliser Trier pour représenter les informations de tri et générer des informations appropriées. des hyperliens pouvant conduire à des actions de tri.

37
Ali MasudianPour

En plus de la réponse d'ALi, pour les colonnes agrégées et connexes, vous pouvez effectuer les opérations suivantes:

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
                   ],
              ],],
    ]);
}

Source: http://www.yiiframework.com/doc-2.0/yii-data-sort.html

15
Ehsan Khaveh

Si vous souhaitez désactiver le tri à partir de la vue de grille pour une colonne particulière, procédez comme suit:

 [
     'attribute' => 'name',
     'enableSorting' => false
 ],

en utilisant 'enableSorting' => false

6
Priyanka

Vous pouvez désactiver le tri dans le contrôleur comme ceci:

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->sort->sortParam = false;
4
pa3py6aka