0

別の cgridview 内に 1 つの cgridview があります。外側のものは次のとおりです。

$this->widget('application.modules.user.components.CsvGridView', array(
    'dataProvider'=>$model->mySearch(),
    'filter' => $model,
    'id'=>'users-grid',
...

内側のものは次のとおりです。

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'vacr-grid',

    'dataProvider'=>$model->searchu(),
   // 'pager'=>false,
   // 'enableSorting'=>false,
    'summaryText'=>'',
    'ajaxUpdate'=>'vacr-grid',

    'columns'=>array(

        'start',
        'end',
                array(
                        'name' => 'vac_type',
                        'value' =>
                        'isset($data->vacType->name)?$data->vacType->name:$data->vac_type'
                ),
    ),
));

問題は、内側のものが適切に更新されないことです (もちろん ajax で更新します)。

たとえば、内側の cgridview で「次へ」をクリックすると、要求された URL は次のようになります。
users-grid が外側の cgridview の ID であることに注意してください。そして、「次へ」をクリックすると、内側と外側の cgridviews の両方が消えます。

ajaxUpdate プロパティを使用しようとしましたが、何も影響しません。ありがとうございました。

4

2 に答える 2

3

これは、私が抱えていた問題と同様の問題です。並べ替えとページングの URL は dataProvider によって設定されますが、検索 URL は ajaxUrl によって設定されます。CGridView をコンテキスト外で使用するには、3 つすべてを設定する必要があります。

個別に設定されたデータプロバイダー:

$dataProvider=new CActiveDataProvider('Modelname',array(
    'criteria'=>$criteria,
    'pagination'=>array(
        'route'=>'something/search'
    ),
    'sort'=>array(
        'route'=>'something/search'
    )
));




$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'vacr-grid',    
    'dataProvider'=>$dataProvider,
    'summaryText'=>'',
    'ajaxUpdate'=>'vacr-grid', // not necessary if same as id
    'ajaxUrl'=>Yii::app()->createUrl( 'Something/search' ),  // this takes care of the search  
    'columns'=>array(    
        'start',
        'end',
                array(
                        'name' => 'vac_type',
                        'value' =>
                        'isset($data->vacType->name)?$data->vacType->name:$data->vac_type'
                ),
    ),
));

また、私の同様の質問...

Yii で CGridView の ajaxUrl パラメータを使用するにはどうすればよいですか?

于 2012-10-01T18:32:44.870 に答える