Php Yii,基于AJAX结果更新CGridView数据提供者
我不确定我是否走对了这条路,但事情是这样的 我有一个下拉列表,当我更改此列表的值时,我希望通过Ajax更新CGridView的数据提供程序 下拉列表Php Yii,基于AJAX结果更新CGridView数据提供者,php,ajax,yii,Php,Ajax,Yii,我不确定我是否走对了这条路,但事情是这样的 我有一个下拉列表,当我更改此列表的值时,我希望通过Ajax更新CGridView的数据提供程序 下拉列表 <?php echo $form->dropDownList( $model, 'assigned_to', CHtml::listData(Users::model()->findAll(), 'id', 'username'), array( 'empty' => 'Pl
<?php echo $form->dropDownList(
$model,
'assigned_to',
CHtml::listData(Users::model()->findAll(), 'id', 'username'),
array(
'empty' => 'Please Select',
'ajax' => array(
'type'=>'POST',
'url'=>Yii::app()->createUrl('CrmCalendar/Create', array('id'=>$model->model_id,'modelId'=>$model->model, 'updateGrid'=>1)),
'dataType' => 'json',
'success'=>'function(data)
{
alert(data);
$.fn.yiiGridView.update("user-activites-grid", {
data: data
});
}',
),
)
); ?>
dpUserActivities
public function dpUserActivities($size=20)
{
$date = DateTime::createFromFormat('d/m/Y H:i:s', $this->StartTime);
$date = $date->format('Y-m-d');
$dataProvider=new CActiveDataProvider($this, array(
'criteria'=>array('condition'=>'assigned_to=:assigned_to AND DATE(StartTime) = :date', 'params'=>array(':assigned_to'=>$this->assigned_to, ':date'=>$date),),
'pagination'=>array('pageSize'=>$size,),
'sort'=>array('defaultOrder'=>'Starttime ASC',),
));
return $dataProvider;
}
我试图实现的是,当assigned to的下拉列表更改时,该值将存储回$model中,dpUserActivites将使用新数据重新运行,然后更新CGridView
对不起,如果这没有意义
如果你需要更多的信息,请告诉我
注意。再仔细想想,使用SESSION是否是一种有效的方法,将用户存储在SESSION中,在dpuserActivities中使用该变量,然后刷新网格??您是否看到了在CRUD标准操作中搜索是如何工作的?例如,在任何生成的crud、admin视图中,您都有高级搜索表单,使您只需查找Hiya All,感谢您的回复,我最终使用了render_partial和ajax成功地在render中重新生成HTML
public function actiongetUserActivitesUpdate($id, $modelId)
{
$model=new CrmCalendar;
$model->model = $modelId;
$model->model_id = $id;
if(isset($_GET['updateGrid']))
{
$model->attributes=$_POST['CrmCalendar'];
$newDp = $model->dpUserActivities();
echo serialize($newDp);
}
}
public function dpUserActivities($size=20)
{
$date = DateTime::createFromFormat('d/m/Y H:i:s', $this->StartTime);
$date = $date->format('Y-m-d');
$dataProvider=new CActiveDataProvider($this, array(
'criteria'=>array('condition'=>'assigned_to=:assigned_to AND DATE(StartTime) = :date', 'params'=>array(':assigned_to'=>$this->assigned_to, ':date'=>$date),),
'pagination'=>array('pageSize'=>$size,),
'sort'=>array('defaultOrder'=>'Starttime ASC',),
));
return $dataProvider;
}