通过下拉列表更新数据库


Yii Update the database from a dropDownList

我尝试从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请求来保存更改