【问题标题】:Yii CGridView Sort for array as dataProviderYii CGridView 将数组排序为 dataProvider
【发布时间】:2014-04-24 07:30:58
【问题描述】:

我有一个数组作为我的 dataProvider(我也设置了自定义过滤方法),它看起来和工作都很好:

但现在,出于响应目的,我需要删除小型设备上的过滤器,我已经完成了这样的操作:

, 'htmlOptions' => array( 'class' => 'hidden-sm hidden-xs hidden-md' )
, 'headerHtmlOptions' => array( 'class' => 'hidden-sm hidden-xs hidden-md' )
, 'filterHtmlOptions' => array( 'class' => 'hidden-sm hidden-xs hidden-md' )

并添加排序按钮,如下所示:

如何使用自定义排序图像添加排序选项?

我可以发布完整的 GridView 代码,但它有点长(因此是自定义列)

更新

这就是我的 dataProvider 最后一个脚本的样子:

if ( isset( $_REQUEST['FiltersForm'] ) )
    $filtersForm->filters = $_REQUEST['FiltersForm'];

# Get rawData and create dataProvider
$filteredData = $filtersForm->filter( $model->results['company'] );
$dataProvider = new CArrayDataProvider( $filteredData );

# Render
$this->render( 'results', array(
    'filtersForm' => $filtersForm,
    'dataProvider' => $dataProvider,
    'model' => $model
) );

【问题讨论】:

    标签: php twitter-bootstrap yii


    【解决方案1】:

    您可以使用Csort

    在使用 Csort 的控制器设置 Dataprovider 中,Example

    public function actionIndex(){
      $sort = new CSort();
      $sort->attributes = array(
        'customer'=>array(
        'asc'=>'customer.customer_name',
        'desc'=>'customer.customer_name desc',
      ),
    
      'school'=>array(
        'asc'=>'school.school_name',
        'desc'=>'school.school_name desc',
      ),
        'submitted_date',
        'requested_date',
     );
    
      $dataProvider=new CActiveDataProvider('Printjob', array(
       'criteria'=>array(
       'alias'=>'pj',
       'join'=>'inner join customer on customer.customer_id=pj.customer_id inner join school on school.school_id=pj.school_id',
    ),
    'sort'=>$sort,
    'pagination'=>array(
      'pageSize'=>self::PAGE_SIZE,
    ),
    ));
    $this->render('index',array('dataProvider'=>$dataProvider)); 
    

    【讨论】:

    • 好的,如果我理解正确,那么我需要在我的控制器中定义每个列的排序类型,然后......(检查我更新的问题)
    • 我还是迷路了,我没有从数据库中获取数据,我是从肥皂请求中获取的。之后,我把它变成一个普通的数组并使用它。我知道,我错过了一些非常简单的东西,这就是为什么我试图找出它是什么。
    • 尝试不使用肥皂并检查,而不是调试。
    • 没有区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    相关资源
    最近更新 更多