Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii,基于AJAX结果更新CGridView数据提供者_Php_Ajax_Yii - Fatal编程技术网

Php Yii,基于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

我不确定我是否走对了这条路,但事情是这样的

我有一个下拉列表,当我更改此列表的值时,我希望通过Ajax更新CGridView的数据提供程序

下拉列表

<?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;
}