2014-06-26 60 views
0

我想排序在cListview ..这对我来说完全正常罚款排序属性来自同一张表..我想知道是否可以根据相关表中的字段进行排序.. 例如..在yii的视图排序关系表

<?php $this->widget('zii.widgets.CListView', array(
     'dataProvider'=>$dataProvider, 
     'itemView'=>'_viewnew', 
     'sortableAttributes'=>array(
     'Code' 

       ), 
)); ?> 

工作正常.. 但我想从另一个表的字段进行排序这样的..

<?php $this->widget('zii.widgets.CListView', array(
     'dataProvider'=>$dataProvider, 
     'itemView'=>'_viewnew', 
     'sortableAttributes'=>array(
     'relation_name.Make' 

       ), 
)); ?> 

这是我迄今为止!并且不会在我的控制器

public function actionIndex() 
    { 
     $dataProvider=new CActiveDataProvider('table1'); 
     $criteria=new CDbCriteria; 
     $criteria->together=true; 
     $criteria->with=array('PMake'); 
     $dataProvider->criteria=$criteria; 
     $dataProvider->sort->defaultOrder='PMake.Make ASC'; 

     $this->render('index',array(
      'dataProvider'=>$dataProvider, 
     )); 
    } 

在我看来,工作

在我的模型

/** 
    * @return array relational rules. 
    */ 
    public function relations() 
    { 
     // NOTE: you may need to adjust the relation name and the related 
     // class name for the relations automatically generated below. 
     return array(
      'PMake'=>array(self::BELONGS_TO, 'PMake', 'ID'), 
     ); 
    } 

这里的排序是什么,我试图去上班。

<?php 
      $this->widget('zii.widgets.CListView', array(
       'dataProvider'=>$dataProvider, 
       'itemView'=>'_view', 
       'sortableAttributes' => array('PMake.Make'=>'Make'), 
       'loadingCssClass' => '', //remove loading icon 
      )); 
     ?> 

回答

0

试一试在控制器

public function actionIndex() 
     { 
      $dataProvider=new CActiveDataProvider('table1'); 
      $criteria=new CDbCriteria; 
      $criteria->together=true; 
      $criteria->with=array('PMake'); 
      //Made changes here 
      $criteria->order = 'PMake.Make ASC' 
      $dataProvider->criteria=$criteria; 

      $this->render('index',array(
       'dataProvider'=>$dataProvider, 
      )); 
     } 
+0

对不起,更新的问题。 – user2636556

+0

检查更改 - 谢谢 –

+0

仍然无法点击视图中的排序方式 – user2636556