【问题标题】:Yii CGridView - Sort by DESC first on column header clickYii CGridView - 在列标题单击时首先按 DESC 排序
【发布时间】:2013-07-09 12:37:24
【问题描述】:

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

我有一个“排名”列,在第一次单击时将按 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']),),
        ));

【问题讨论】:

    标签: sorting yii cgridview


    【解决方案1】:

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

    'desc' => 'rating * percent / 100 ASC',
    'asc' => 'rating * percent / 100 DESC',
    

    【讨论】:

      【解决方案2】:

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

         public function search($status) 
         { 
              $criteria = new CDbCriteria;    
              $criteria->order = 'store_name desc';
         }
      

      【讨论】:

      • 这不会完成 OP 想要的。它将始终按 store_name desc 排序。
      【解决方案3】:

      从 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 )
      ),
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-15
        • 1970-01-01
        • 2011-08-29
        • 1970-01-01
        • 2013-02-08
        • 2023-03-05
        • 1970-01-01
        相关资源
        最近更新 更多