我是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',
),
),
));
?>
请帮帮我,谢谢你
答案 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()
});