我尝试从CGridView的下拉列表中更新数据库,但没有成功。
下面是CGridView的代码:<?php $this->widget('zii.widgets.grid.CGridView', array(
'id' => 'invoice-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
'username',
array(
'name' => 'state',
'type' => 'raw',
'value' => '$data->stateDropdown',
'filter' => array('0' => Yii::t('app', 'No'),
'1' => Yii::t('app', 'Yes'),
),
),
array(
'class' => 'CButtonColumn',
'template'=>'{view}',
),
),
)); ?>
这是模型中函数stateddropdown ()的getter:
public function getStateDropdown()
{
$state = array(
0 => 'No',
1 => 'Yes',
);
return CHtml::dropDownlist('state', $this->state, $state, array(
'class' => 'state',
'data-id' => $this->id,
'onchange' => 'alert(0);',
));
}
当我改变dropDownList元素时,警报脚本被触发,但是当我尝试使用函数代替时,我有一个错误。我想使用下面描述的函数来更新数据库中state的值。
function updateState($state, $id)
{
$user = User::model()->findByPk($id);
$user->state = $state;
$user->update();
}
我如何才能真正调用函数updateState()来代替alert(0)
快速回答:使用x-edit扩展,它已经完成了令人印象深刻的工作
否则,你必须建立一个完全一样的东西,
让用户从列表中选择一个项目,然后发出ajax请求来保存更改