1

how can i display data for every let's say odd entry? So first record Z, second record do Y, third record do Z, fourth do Y. or lets say i get from model every nth record, and another that does 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,
        ));

    }
4

1 回答 1

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,我使用此方法通常添加额外的代码而不是用于过滤,例如,您想每隔四个元素添加一个新行,为此使用$indexand$widget提供的变量调用中的itemView属性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 }

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

于 2014-09-28T14:40:42.157 回答