使用下拉列表请求后的renderPartial


renderPartial after a request with dropDownList

首先,请注意,我注意到具有分页器的常见Yii小部件可以在不重新加载页面的情况下转到任何页面,而只需通过AJAX请求它,然后更改已加载页面的内容。这样的行为将完全满足我目前的需要。

在我的一个视图中有一个简单的dropDownList。我想做的是改变页面的内容,而不需要重新加载页面,就像Yii的小部件一样。

这可能吗?如何?

我尝试在我的控制器中做这样的事情:

if(Yii::app()->request->isAjaxRequest){
    $this->renderPartial(.....);
}

和这个在我的dropDownList:

<?php
    echo CHtml::dropDownList('usage', 'cg', array(
        'd'=>'Daily',
        'm'=>'Monthly'
    ), array(
        'submit'=>array('admin/user', 'id'=>$user->iduser),
        'params'=>array('cg'=>'js:$(this).val()'),
        'options'=>array(
            Yii::app()->session['cg']=>array(
                'selected'=>true
            )
        )
    ));
?>

但是dropDownList一直在重新加载页面

我已经做了以下操作来根据dropDownList的选定值重新加载div的内容。可能对你有帮助。

echo CHtml::dropDownList('usage','cg',array('d'=>'Daily','m'=>'Monthly'),array('ajax'=>array(
        'type'=>'POST', //request type
        'url'=>$this->createUrl('controller/loadContent'), //url to call.
        'update'=>'#div_id',//div to update
        'data'=>array('cg'=>'js:this.value') 
        ))); 

public function actionLoadContent()
{
   ..........
   ..........
   $this->renderPartial('_ajaxContent', $data, false, true);
}