我遵循了post。但是这里有两件事情出错了。
更新cgridview时,我需要刷新页面以更新下一页(最后一页,错误的行)。
array(
'header'=>"Status Change",
'type'=>'raw',
'value'=>'CHtml::dropDownList($data->storeStatus->status, \'\',
array(\'1\' => \'Active\', \'2\' => \'Inactive\',\'3\'=>\'Suspended\',\'4\'=>\'Pending\'),
array(\'empty\' => \'Status\',\'\',
"ajax"=>array(
\'type\' => \'POST\',
\'url\' => Yii::app()->controller->createUrl(\'ChangeStoreStatus\',array(\'id\'=>$data->store_id)),
\'data\'=> "js:{store_status_id: $(this).val(),store_id: $data->store_id}",
\'success\'=> "function() {
$.fn.yiiGridView.update(\'inactive-store\');
}",
\'error\'=> "function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
}",
)),
array(\'class\'=>\'ChangeStoreStatus\')
)',
),
答案 0 :(得分:0)
您可以在模型中使用getter
public function getStatusDropdown()
{
$stats = array(
'1' => 'Active', '2' => 'Inactive','3'=>'Suspended','4'=>'Pending'
);
return CHtml::dropDownlist('status',$this->status,$stats, array(
'class' => 'status',
'data-id' => $this->id,
));
}
所以在你的网格中你会有
array(
'name' => 'Status',
'type' => 'raw',
'value' => '$data->statusDropdown',
),
现在发送ajax的技巧:
$url = $this->createUrl('ChangeStoreStatus');
Yii::app()->clientScript->registerScript('initStatus',
"$('select.status').on('change','body',function() {
el = $(this);
$.ajaxPost('$url', {status: el.val(), id: el.data('id')}
});",
CClientScript::POS_READY
);
现在,您获得了网格中元素的下拉值和ID。可能是错误,但这正是你要找的。