Yii cgridview ajaxUpdate属性

pzfprimi  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(152)

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

问题是内部的一个没有正确更新(当然用 AJAX 更新)。
例如,当我在内部cgridview中单击“下一步”时,请求的URL是:请求URL:http://www. aspx. com-2016年08月归档的文件
请注意,users-grid是外部cgridview的id。然后,在我单击“下一步”后,内部和外部cgridview都消失了。
我尝试使用ajaxUpdate属性,但它不会影响任何东西。谢谢。

iqxoj9l9

iqxoj9l91#

这和我遇到的问题很相似。排序和分页URL是由dataProvider设置的,而搜索URL是由ajaxUrl设置的。要在上下文之外使用CGridView,必须设置所有这三个URL。
单独设置数据提供程序:

$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参数?

qlfbtfca

qlfbtfca2#

嵌套CGridView时,CGridView的两个非常重要的配置选项是updateSelectorfilterSelector!默认情况下,这些选择器针对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',

现在子网格视图可以独立于父网格视图进行更新。子节点的网格视图id必须重新出现在 AJAX 请求中,否则它的内容将不会被放置在触发请求的页面/网格视图中!

相关问题