2014-04-24 52 views
2

我有一个数组作为我的数据提供程序(我已经设置了自定义过滤器方法太)和它的外观和工作得很好:的Yii CGridView排序数组作为dataProvider,

enter image description here

但现在,为响应目的,我需要在小型设备上,这是我必须完成这样的过滤式搜索:

, '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') 

,并添加排序按钮,这样的:

enter image description here

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

我可以张贴满GridView的代码,但它是一个有点长(因此自定义列)

UPDATE

这是最后一个脚本怎么我的数据提供程序是这样的:

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 
)); 

回答

0

您可以使用Csort

在控制器设置数据提供程序使用Csort,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)); 
+0

好吧,如果我理解正确的话,那么我就需要定义每个列排序类型在我的控制器,然后... ...(检查我的更新问题) – Peon

+0

我仍然迷失,我没有从数据库中获取数据,我从肥皂请求中获取数据。之后,我把它变成一个普通的阵列,并与之合作。我知道,我错过了一些非常简单的事情,这就是为什么我试图找出它是什么。 – Peon

+0

尝试不用肥皂和检查,比你可以调试。 – Rorschach