簡體   English   中英

Yii cgridview ajaxUpdate屬性

[英]Yii cgridview ajaxUpdate property

我在另一個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:// localhost / orm / vac / vac / admin / user_id / 1 / Vac_page / 2?ajax = users-grid
注意,users-grid是外部cgridview的ID。 然后單擊“下一步”后,內部和外部cgridviews都消失了。

我嘗試使用ajaxUpdate屬性,但它不會影響任何內容。 謝謝。

這與我遇到的問題類似。 排序和分頁網址由dataProvider設置,而搜索網址由ajaxUrl設置。 您必須將所有3設置為在上下文之外使用CGridView。

dataprovider單獨設置:

$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參數?

嵌套時,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更新。 注意:必須在ajax請求中重新出現子級的gridview ID,否則它的內容將不會放在觸發請求的頁面/ gridview中!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM