【问题标题】:Yii. CGridView in frontend. CActiveDataProvider without $model->search()易。前端的 CGridView。没有 $model->search() 的 CActiveDataProvider
【发布时间】:2014-04-29 06:40:11
【问题描述】:

我不知道这是否可能,但假设它一定是。 我需要在前端视图中显示一些数据 - 表格形式的公司列表: 公司名称 1 - 国家 1 - 网站 1 - 等等... 公司名称 2 - 国家 2 - 网站 2 - 等等... ETC... 为此,我正在尝试使用 CGridView。

我的控制器:

public function actionList()
{

    $sort = new CSort();
    $sort->attributes = array(
        'defaultOrder'=>'company_name DESC',
        'company_name'=>array(
            'asc'=>'company_name ASC',
            'desc'=>'company_name DESC',
        ),
        'country'=>array(
            'asc'=>'country ASC',
            'desc'=>'country DESC',
        ),
    );

    $criteria = new CDbCriteria();
    $criteria->order = "company_name DESC";
    $criteria->condition = 'approve = :approve';
    $criteria->params = array(':approve'=>1);       

    $dataProvider = new CActiveDataProvider('EuCompanies', array('criteria'=>$criteria,'sort'=>$sort));

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

我的看法:

<?php
    $this->widget('zii.widgets.grid.CGridView', array(                                                 
      'dataProvider' => $dataProvider,                                                             
      'columns'=>array(                                                                                                                                                                            
        'company_name',
        'country',
        'company_website',
        'economic_sector',
        'contact_person',
        'email',
        'phone_number'                                                                                                                                                                                  
      ),                                                                                                 
    ));
    ?>

输出是一个漂亮的网格,它考虑了选择标准,以及可单击的“公司名称”和“国家/地区”,但单击它们不会使列排序。我想这是因为在 dataProvider 中不使用 $model->search() 就无法进行排序,或者我只是做错了什么?

【问题讨论】:

标签: sorting yii frontend cgridview cactivedataprovider


【解决方案1】:

好的,解决了。有两点错误:

第一:

$criteria->order = "company_name DESC";

压倒任何其他类型。删除此字符串后,我的列变为可排序的。

第二个(默认排序不起作用):

不得不搬家

$sort->attributes = array(
    'defaultOrder'=>'company_name DESC',

从属性到

$sort = new CSort();
    $sort->defaultOrder = 'company_name ASC';
    $sort->attributes = array(...

工作完成,谢谢:)

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多