yii2 - 列表数据中的下拉列表
问题描述
这是我的代码:
[
'attribute' => 'status',
'value' => function ($model) {
return Html::dropDownList('status', ['10' => 'Active', '20' => 'Deactive']);
},
],
我只想要状态列中的下拉菜单。如果记录是活动的或非活动的,它将被选中。
解决方案
您需要使用'format' => 'raw'
列选项,并且您的定义dropDownList()
是错误的,您需要将选择字符串作为第二个参数,将下拉选项作为第三个参数。将您的代码更改为以下内容:
[
'attribute' => 'status',
'format' => 'raw',
'value' => function ($model) {
return Html::dropDownList('status', $model->status, ['10' => 'Active', '20' => 'Deactive']);
},
],
编辑
在更改下拉列表时,您也没有想要更新状态的初始要求。您可以将 ajax 调用绑定到下拉列表。
在您初始化GridView
.
注意:url:'controller/update-status?id'+id
将 ajax 调用更改为要更新行状态的相对控制器,但不要删除id
$js = <<<JS
$(document).on('ready pjax:success',function(){
$(".switch-status").on('change',function(){
var data={};
data[$(this).attr("name")]=$(this).val();
var id=$(this).closest("tr").data('key');
$.ajax({
method:'post',
url:'/controller/update-status?id='+id,
data:data,
success:function(data){
if(!data.success){
alert(data.message);
}else{
alert("Status updated.");
}
},
error:function(jqXHR, textStatus, errorThrown ){
alert(errorThrown);
}
});
});
});
JS;
$this->registerJs($js, yii\web\View::POS_END);
然后在您的 GridView 列status
中将下拉列表更改为以下内容
return Html::dropDownList(Html::getInputName($model, 'active'), $model->active, [10 => 'Active', 20 => 'Deactive'], ['class' => 'switch-status']);
然后转到您的控制器并添加用于更新状态的操作代码
注意:使用您正在使用的相应型号更改Model
第一行名称。$model = Model::findOne($id);
public function actionUpdateStatus($id) {
$model = Affiliate::findOne($id);
$app = Yii::$app;
$request = $app->request;
if($request->IsAjax && $request->isPost) {
Yii::$app->response->format = Response::FORMAT_JSON;
if($model->load($request->post()) && $model->save()) {
return ['success' => true];
} else {
return [
'success' => false,
'message' => implode('<br />', ArrayHelper::getColumn($model->errors, '0'))
];
}
}
}
推荐阅读
- python - 在 PyPlot 背景图像的范围内剪辑 Seaborn Kdeplot
- python - 向后打印阶乘?
- javascript - addEventListener click 在 KeyPress 之后立即消失
- c# - 如何在服务器上将 url 保存为 html 页面
- angular - 环回 Firebase 连接器
- firebase - Firestore 按行号获取一系列文档
- java - 无法使用 DNS 访问 tomcat 应用程序
- python - numpy 变量是否相互链接?(帮助)
- java - 操作系统(linux)如何杀死java程序?当我硬杀死一个java进程时jvm会发生什么?
- ios - PJSIP 视频通话:没有视频……iOS 中只出现空白窗口?