Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii2 GridView小部件,需要在单击排序顺序时反转_Php_Sorting_Gridview_Yii2_Dataprovider - Fatal编程技术网

Php Yii2 GridView小部件,需要在单击排序顺序时反转

Php Yii2 GridView小部件,需要在单击排序顺序时反转,php,sorting,gridview,yii2,dataprovider,Php,Sorting,Gridview,Yii2,Dataprovider,我需要Yii2 GridView小部件的帮助。 问题是: 如果您单击未排序的列名,默认情况下,它将从最小值排序到最大值(如defaultOrder中的sort\u ASC const)。单击时,我应该将什么更改为反向排序顺序,它应该是从最大到最小(如sort_DESC) 选择默认的onload排序顺序没有问题,我需要更改它的onclick顺序。dataProvider的排序选项包括: 'sort' => [ 'attributes' =>

我需要Yii2 GridView小部件的帮助。 问题是: 如果您单击未排序的列名,默认情况下,它将从最小值排序到最大值(如defaultOrder中的sort\u ASC const)。单击时,我应该将什么更改为反向排序顺序,它应该是从最大到最小(如sort_DESC)

选择默认的onload排序顺序没有问题,我需要更改它的onclick顺序。dataProvider的排序选项包括:

            'sort' => [
            'attributes' => ['weekly_length','name', 'market','unique','sessions','retentions', 'session_length_summary',],
            'defaultOrder' => ['weekly_length' => SORT_DESC],
          ],

只需颠倒排序顺序,如下所示:-

'sort' => [
            'attributes' => [
                'weekly_length' => [
                    'asc' => ['weekly_length' => SORT_DESC,],
                    'desc' => ['weekly_length' => SORT_ASC],
                ]
            ]
        ]

只需颠倒排序顺序,如下所示:-

'sort' => [
            'attributes' => [
                'weekly_length' => [
                    'asc' => ['weekly_length' => SORT_DESC,],
                    'desc' => ['weekly_length' => SORT_ASC],
                ]
            ]
        ]
您可以按如下方式使用:

$dataProvider->setSort([
             'attributes' => [
                     'weekly_length' => [
                        'asc' => ['weekly_length' => SORT_DESC],
                         'desc' => ['weekly_length' => SORT_ASC],

                     'defaultOrder' => ['weekly_length' => SORT_DESC]
                ],
            ]
      ]);
您可以按如下方式使用:

$dataProvider->setSort([
             'attributes' => [
                     'weekly_length' => [
                        'asc' => ['weekly_length' => SORT_DESC],
                         'desc' => ['weekly_length' => SORT_ASC],

                     'defaultOrder' => ['weekly_length' => SORT_DESC]
                ],
            ]
      ]);

如果您再次单击,它将对其进行排序DESC,如果再次单击,则为ASC。这是一个大表,可能需要很长时间才能排序两次。我试图节省用户的时间/如果再次单击,它将按DESC排序,如果再次单击,则按ASC排序。这是一个大表,排序两次可能需要很长时间。我试图节省用户的时间/好主意,但并不完美。工作正常,但箭头,显示排序顺序颠倒)无论如何,谢谢。如果没有更好的解决方案,我会等几个小时——用你的,用你的想法。再次感谢/好主意,但不完美。工作正常,但箭头,显示排序顺序颠倒)无论如何,谢谢。如果没有更好的解决方案,我会等几个小时——用你的,用你的想法。再次感谢/这与第一个答案几乎相同,但允许您在不搜索datProvider声明的情况下进行更改。负号-它重写了已有的排序首选项,所以要小心。这与第一个答案几乎相同,但允许您在不搜索datProvider声明的情况下更改它。负号-它重写了已有的排序首选项,所以要小心。