CSort中的applyOrder()方法源码
public function applyOrder($criteria)
{
$order=$this->getOrderBy();
if(!empty($order))
{
if(!empty($criteria->order))
$criteria->order.=', ';
$criteria->order.=$order;
}
}
按照这个逻辑,使用applyOder()是会递加排序条件,这个让CGridView出现一个问题~
CGridView要指定默认排序,有点绕,假如直接在 $criteria中指定order的话,后面点击“表头”排序,就是复合排序的效果,这个不是我们所想要的。
我现在的做法是:
$criteria = new CDbCriteria;
$dataProvider = new CActiveDataProvider('Cases', array(
'criteria' => $criteria,
));
if(!$dataProvider->getSort()->getOrderBy())
{
$sort=new CSort('Cases');
$sort->defaultOrder='sort_order DESC';
$dataProvider->sort=$sort;
}
可是感觉这样实在是太绕了~~ 我感觉 CSort::applyOrder() 方法,没有必要递加,如果要递加的,可以另外写一个函数,或者给该方法加个参数来实现