Yii的cgridview ajaxUpdate财产(Yii cgridview ajaxUpdat

2019-07-29 03:22发布

我还有一个cgridview里面一个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'
                ),
    ),
));

问题是,内一个不更新正确(与阿贾克斯当然更新)。

当我点击 “下一个”,例如,在内部cgridview,所请求的URL是:请求URL:http://本地主机/ ORM /真空/真空/ adminu / USER_ID / 1 / Vac_page / 2 AJAX =用户栅
请注意,用户网是外cgridview的ID。 再经过我点击“下一步”内和外cgridviews都消失了。

我尝试使用ajaxUpdate属性 ,但它不会影响任何东西。 谢谢。

Answer 1:

这是一个我有一个类似的问题。 排序和分页的URL是由数据提供程序,而搜索URL被ajaxUrl做设定。 你必须将所有3使用CGridView断章取义。

数据提供程序单独设置:

$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'
                ),
    ),
));

也是我类似的问题?

如何使用CGridView的Yii中ajaxUrl参数?



Answer 2:

嵌套当他们CGridView的两个非常重要的配置选项是updateSelectorfilterSelector ! 在默认情况下,这些选择针对所有可用的分页/排序一个GridView中的链接。 所以点击一个嵌套的gridview的排序链接还导致所有父GridView的更新。 所以,你必须调整这些选择,如果这是一个问题(很可能如此),只选择gridview的直接后代,而不包括那些孩子的GridView的。 反之则不是一个问题,如果孩子的GridView有另一个ID。

所以你父母的GridView(大多需要)这样的选择(请注意使用“大于”符号的):

$this->widget('CGridView',array(
    ...
    'updateSelector' => '#PARENTGRIDVIEW > .items.table > thead tr th a.sort-link, #PARENTGRIDVIEW > .pagination a',
    'filterSelector' => '#PARENTGRIDVIEW .filters input, #PatientSaleMedicalsIndex .filters select',

现在孩子的GridView可以更新独立于母公司。 注意:孩子的GridView的ID在Ajax请求重新出现,否则它的内容将不会被放置在页面/ gridview的发射请求中!



文章来源: Yii cgridview ajaxUpdate property