2013-02-23 2 views
3

CGridView의 초기 정렬을 설정할 수있는 방법이 있습니까? 다음을 포함하는 DB 테이블이 있습니다. id | 이름 | 설명 | create_time ... 내 CGridView 있음 (내 CGridView있는 열을 설정하여 수행 할 수 있지만이 dataProvider에서이 필드를 제거 할 수있는 다른 방법이 있는지 알고 싶습니다) 내 ID를 표시하려면 원하는 및 원하는 내 이름을 ASC로 정렬하도록 ID를 항상 정렬하고 CGridView에 대한 조건을 설정할 수 없기 때문에 어떻게해야합니까?yii CGridView 초기 정렬

+0

CGridView는 정렬 된 데이터 만 표시합니다. 당신은 쿼리에서 정렬해야합니다 (보통'CActiveDataProvider'). 스캐 폴딩에 Gii를 사용했다면 모델의'search' 메소드는 쿼리가있는 곳입니다. 여기에 예제가 있습니다 : http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider – adamors

답변

4

모델의 기본 순서는 각각 CActiveDataProvider입니다. 다음 스 니펫은 기본적으로 열 SortMeColumn별로 정렬합니다.

public function search() 
{ 
    $criteria = new CDbCriteria; 
    $criteria->compare('ID', $this->ID, true); 
    $criteria->compare('SortMeColumn', $this->SortMeColumn, true); 

    return new CActiveDataProvider($this, 
     array(
      'criteria' => $criteria, 
      'sort' => array(
       'defaultOrder' => array(
       'SortMeColumn' => CSort::SORT_DESC 
      ), 
      ), 
     )); 
} 

참조 용으로 CSort을 참조하십시오.

+0

아주 좋은 대답입니다. 하지만 항상이 주문을 기본 주문으로 사용하고 싶지 않은 경우 어떻게해야합니까? ID 뒤에 기본 정렬이 필요한 다른 페이지가있는 경우 어떻게해야합니까? – tzortzik

+0

@tzortzik :이 경우'defaultOrder'에 대한'array'를 원하는대로 매개 변수로 전달하십시오. – Kai

+1

나는이 함수가'public function search ($ arrDefaultOrder)'로 검색 함수를 오버로드한다고 생각한다. – tzortzik