使用clistview显示每个第n个数据的数据

时间:2014-09-27 14:43:06

标签: php yii clistview

我怎么能显示每个让我们说奇数条目的数据? 所以先记录Z,第二记录做Y,第三记录做Z,第四记录做Y. 或者假设我从模型中获取每个第n个记录,另一个来自n-1?

public function getNewItem()//for main page grids
    {
        $criteria = new CDbCriteria;

        $criteria->order = 'posted_date DESC';
        $criteria->compare('product_status',"Y");
        $criteria->compare('product_approval_status',"Y");      
//????

        return new CActiveDataProvider( $this, array(
                'criteria'=>$criteria,
                'pagination'=>false,
        ));

    }

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点;取决于您的过滤需要多复杂;

您可以修改标准的第一种方法,只比过滤这样的奇数或偶数记录

        $criteria = new CDbCriteria;

        $criteria->order = 'posted_date DESC';
        $criteria->compare('product_status',"Y");
        $criteria->compare('product_approval_status',"Y");

        $criteria->addCondition('MOD(id,2)=1','AND');

或获取相应记录子集的任何此类条件

第二种方法是在CListView中使用的部分文件中对其进行过滤,我使用此方法通常添加不用于过滤的其他代码,例如,您希望每隔四个元素添加一个新行,For这会使用$index调用中$widget属性中提供的CListView<?php if(($index)%6 == 0 || $index == 0 ){ ?> <div class="row"> <?php } ?> // Regular view rendering code // ... <?php if(($index+1)%6 == 0 || ($index+1) == $widget->dataProvider->itemCount){ ?> </div> <?php } 变量,使用类似的内容。

{{1}}

这里我用它来为列表中的每6个项目插入一个新的div,或者它是第一个/最后一个项目 这对于项目的条件渲染/添加类等很有用。