fn.yiiGridView.update事件未触发

时间:2015-04-20 01:41:15

标签: php ajax yii

我是Yii的新手。我有一个下拉列表和一个CGridView。我的想法是,我想根据用户在下拉列表中选择的内容过滤gridview中显示的记录。我已经阅读了几个教程,几乎所有教程都非常像this one

不幸的是,代码似乎没有触发gridview更新事件。

以下是基于教程的代码

控制器

public function actionIndex()
{

        $criteria = (isset($_GET['id-dropdown'])) ?
                array(
                    'condition' => 'account = ' . $_GET['id-dropdown'],
                ): array();

        $options = array(
            'criteria' =>$criteria,
            'pagination' => array(
                'pagesize' => 100,
            ),
        );
        $modelAccount = new Account();
        $dataProvider = new CActiveDataProvider('Jurnal', $options);

        $selected_account = (isset($_GET['id-dropdown'])) ? $_GET['id-dropdown']: '101'; //101 is the default

    $this->render('index', array(
                //'modelCustom'=>$modelCustom,
'modelAccount'=>$modelAccount, 
                'dataProvider'=>$dataProvider,
                'selected_account' => $selected_account ));
}

这是我的观点

   <?php 
Yii::app()->clientScript->registerScript('items_update', "$('#id-dropdown').change(function(){
        alert('ok'); //this works
        $.fn.yiiGridView.update('jurnal-grid', {
                type:'GET',
                data: $(this).serialize(),
                success=>
                   js:function() { $.fn.yiiGridView.update('jurnal-grid');}
                }
            }
        );
    });
    return false;",
    CClientScript::POS_READY);
?>
<h1>View Per Account</h1>
<div class="form">
<?php

$form=$this->beginWidget('CActiveForm', array(
    'id'=>'menu-dropdown-form',
    'enableAjaxValidation'=>true,
));

echo $form->labelEx($modelAccount, $selected_account);
$criteria = new CDbCriteria();
$criteria->order = 'id ASC';
$account = Account::model()->findAll($criteria);
$accountlist = CHtml::listData($account, 'id', 'description');
echo CHtml::dropDownList('id-dropdown', '$selected_account', $accountlist);
$this->endWidget();

?>
</div>
<?php
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'jurnal-grid',
    'dataProvider'=>$dataProvider,
    'columns' => array(
        'tanggal',
        'account',
        array(
            'class' => 'CButtonColumn',
        ),
    ),
));
?>

请帮帮我,谢谢你

2 个答案:

答案 0 :(得分:0)

尝试替换

success=>
    js:function() { $.fn.yiiGridView.update('jurnal-grid');}

success=> "$.fn.yiiGridView.update('jurnal-grid');"

无需使用js:function

答案 1 :(得分:0)

而不是:

$.fn.yiiGridView.update('jurnal-grid', {
    type:'GET',
    data: $(this).serialize(),
    success=>
        js:function() { $.fn.yiiGridView.update('jurnal-grid');}
    }
});

试试这个:

$.fn.yiiGridView.update('jurnal-grid', {
    data: $(this).serialize()
});