Yii';s CArrayDataProvider和新行

Yii';s CArrayDataProvider和新行,yii,grid,master-detail,cactivedataprovider,Yii,Grid,Master Detail,Cactivedataprovider,是否有一种方法可以在网格中显示从CActiveDataProvider获取的数据,并提供一些实际上尚未进入数据库的新行 这是我的设想 我必须填写X倍(账单中产品的数量),并为每一行提供编辑和保存的可能性 Product QTY product1 3 | ____ Edit item 1 (not yet in the db) ____ Edit item 2 (not yet in the db) ____ Edit item 3 (

是否有一种方法可以在网格中显示从CActiveDataProvider获取的数据,并提供一些实际上尚未进入数据库的新行

这是我的设想

我必须填写X倍(账单中产品的数量),并为每一行提供编辑和保存的可能性

 Product    QTY 
 product1   3
     |
     ____  Edit item 1 (not yet in the db)
     ____  Edit item 2 (not yet in the db)
     ____  Edit item 3 (not yet in the db)
所以它有点像一个主细节网格(我已经把它整理好了怎么做…) 但我无法在网格上显示arren尚未在数据库中显示的内容


我知道我必须创建一个临时模型数组,比如$model[]=newmodel();然后以某种方式将数据推送到CActiveDataProvider,但不知道syntaxis…

您不能使用
CActiveDataProvider执行此操作,因为正如文档所述

CActiveDataProvider以类modelClass的ActiveRecord对象的形式提供数据。它使用AR CActiveRecord::findAll方法从数据库检索数据

然而,这是有原因的。你可以在其中放入任意数据,也就是说,将一个真实对象数组与一个空对象数组合并并使用它

$rawData=array(
    array('id'=>1, 'username'=>'from', 'email'=>'array'),
    array('id'=>2, 'username'=>'test 2', 'email'=>'hello@example.com'),
  );

$arrayDataProvider=new CArrayDataProvider($rawData, array(
    'id'=>'id',
    'sort'=>array(
        'attributes'=>array(
            'username', 'email',
        ),
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));

如您所见,这里的数据是一个简单的数组,但您甚至可以对数据进行排序。

您是否使用
CActiveDataProvider
进行了尝试?