Yii CGridView dynamische dataProvider
Gibt es eine Möglichkeit, re-Rendern der view enthält CGridView mit einem benutzerdefinierten 'dataProvider' - option? Zum Beispiel habe ich eine solche Datei anzeigen
<?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'
),
),
)); ?>
Als Anbieter habe ich $model->search()
, aber ich möchte zum Beispiel, wenn Sie eine Taste gedrückt, diese Ansicht neu gerendert via ajax mit verschiedenen dataProvider
. Gibt es eine Möglichkeit, dies zu erreichen? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies auf verschiedene Weise tun.
Unter denen, lassen Sie die controller bieten die Ansicht mit dem $dataProvider, wie diese:
Könnte die Steuerung instanziieren, die Daten-provider auf der Grundlage der Parameter, die kamen in dieser Anfrage. Die Sicht dann eben übergibt diese Daten Anbieter zu CGridView, völlig oblivion genau zu seinem Typ.
Wie bereits erwähnt, können Sie erweitern CDataProvider (der gleichen Klasse, CActiveDataProvider erweitert), passen Sie es vollständig, solange es stellt die API benötigt es. Siehe seine Dokumentation
Den Punkt der dataprovider ist, geben Sie die entsprechenden Daten von einem bestimmten Modell, das auf bestimmte Eingänge. Search() tut dies gut, denn Sie brauchen nur zu instanziieren, die eine model-Klasse mit den entsprechenden Attributen, die Sie durchsuchen möchten gegen, und die dataprovider-geben Sie alle Ihre Daten, dass Spiele, die Kriterien.
Wenn Sie möchten, ändern Sie die Ausgabe der dataprovider darüber hinaus erweitern Sie Ihre model-Klasse mit einem modifizierten search () - Funktion. Wenn Sie versuchen, ein völlig anderes Modell übergeben, die in Ihrem Daten-provider, ich würde eine andere Ansicht für Sie, weil es sich auf verschiedene Spalten sowieso.
Diesem wiki auf dynamische CGridView geben Ihnen viele Ideen.