2

是否可以更改列标题单击排序的顺序?

我有一个“排名”列,第一次单击时将按 ASC 排序,并且只有在第二次单击时才会转到 DESC 排序 - 我需要反转它,以便第一次单击是 DESC,第二次单击是 ASC。

这可能吗?

return new CSqlDataProvider($sql . $search, array(
            'totalItemCount' => $itemCount,
            'params' => $params,
            'sort' => array(
                'attributes' => array (
                    'enabled',
                    'store_name',
                    'rating' => array (
                        'desc' => 'rating * percent / 100 DESC',
                        'asc' => 'rating * percent / 100 ASC',
                    ),
                ),
                'defaultOrder' => array( 'store_name'=>false )
            ),
            'pagination' => array('pageSize' => Yii::app()->user->getState('pageSize_cs', Yii::app()->params['defaultPageSize']),),
        ));
4

3 回答 3

2

我知道这样做的唯一方法是导致列箭头指向错误方向的黑客攻击。

'desc' => 'rating * percent / 100 ASC',
'asc' => 'rating * percent / 100 DESC',
于 2013-11-25T17:04:15.323 回答
1

我认为CGridView默认情况下,如果您单击标题,它将按降序显示,如果您ASC希望反向过程反向执行

   public function search($status) 
   { 
        $criteria = new CDbCriteria;    
        $criteria->order = 'store_name desc';
   }
于 2013-07-11T10:20:04.740 回答
0

从 Yii 1.1.3 开始,增加default了对属性设置的关键支持。这正是你想要的。例子:

'sort' => array(
    'attributes' => array (
        'enabled',
        'store_name',
        'rating' => array (
            'desc' => 'rating * percent / 100 DESC',
            'asc' => 'rating * percent / 100 ASC',
            'default' => 'desc',
        ),
    ),
    'defaultOrder' => array( 'store_name'=>false )
),
于 2015-06-07T07:24:00.110 回答