Yii CGridView动态数据提供程序

Yii CGridView动态数据提供程序,yii,Yii,是否有方法使用自定义“dataProvider”选项重新呈现包含CGridView的视图?例如,我有这样的视图文件 <?php $this->widget('bootstrap.widgets.BootGridView',array( 'id'=>'operations-grid', 'type'=>'striped bordered', 'dataProvider'=>$model->search(), 'col

是否有方法使用自定义“dataProvider”选项重新呈现包含CGridView的视图?例如,我有这样的视图文件

<?php $this->widget('bootstrap.widgets.BootGridView',array(
    'id'=>'operations-grid',
    'type'=>'striped bordered',
    'dataProvider'=>$model->search(),       
    'columns'=>array(
        array('name'=>'operationType','value'=>'$data->operationType->name'),
        array(
            'name'=>'creation_date','type'=>'datetime'
        ),
        'ammount_usd:raw:Ammount',
        'comment:text:Comment',
        array(
            'name'=>'currency',
            'value'=>'$data->currency->short',
        ),
        array(
            'name'=>'client',
            'value'=>'$data->client->fio'
        ),
        array(
            'name'=>'organization',
            'value'=>'$data->organization->name'
        ),

        array(
            'class'=>'bootstrap.widgets.BootButtonColumn',
            'header'=>'Action'
        ),
    ),
)); ?>


作为一个提供者,我有
$model->search()
,但我想举例来说,如果一个按钮按下了这个视图,它将通过ajax以不同的
数据提供者重新呈现。有没有办法做到这一点?谢谢。

数据提供者的重点是根据特定输入为您提供特定模型的适当数据。Search()做得很好,因为您只需要实例化一个具有要搜索的适当属性的模型类,数据提供程序将为您提供与该条件匹配的所有数据


如果您希望更改dataprovider的输出,则可以使用修改后的search()函数扩展模型类。如果您试图将一个完全不同的模型传递到数据提供程序中,我会为它设置一个不同的视图,因为它将有不同的列。

数据提供程序的目的是根据特定输入为您提供特定模型的适当数据。Search()做得很好,因为您只需要实例化一个具有要搜索的适当属性的模型类,数据提供程序将为您提供与该条件匹配的所有数据


如果您希望更改dataprovider的输出,则可以使用修改后的search()函数扩展模型类。如果您试图将一个完全不同的模型传递到您的数据提供程序中,我会为它设置一个不同的视图,因为它无论如何都会有不同的列。

您可以通过几种方式来实现这一点。 其中,您可以让控制器提供带有$dataProvider的视图,如下所示:

$this->widget('bootstrap.widgets.BootGridView',array(
'id'=>'operations-grid',
'type'=>'striped bordered',
'dataProvider'=>$dataProvider,   
控制器可以根据该请求中的参数实例化所需的数据提供程序。然后,视图将这个数据提供程序传递给CGridView,完全忽略了它的精确类型


如前所述,您可以扩展CDATA提供程序(与CActiveDataProvider扩展的类相同)以完全定制它,只要它提供它所需的API。查看它的

您可以通过多种方式来实现这一点。 其中,您可以让控制器提供带有$dataProvider的视图,如下所示:

$this->widget('bootstrap.widgets.BootGridView',array(
'id'=>'operations-grid',
'type'=>'striped bordered',
'dataProvider'=>$dataProvider,   
控制器可以根据该请求中的参数实例化所需的数据提供程序。然后,视图将这个数据提供程序传递给CGridView,完全忽略了它的精确类型

如前所述,您可以扩展CDATA提供程序(与CActiveDataProvider扩展的类相同)以完全定制它,只要它提供它所需的API。查看它的

这个关于动态的wiki应该给你很多想法。

这个关于动态的wiki应该给你很多想法