提问人:Zargathronax 提问时间:11/15/2023 更新时间:11/15/2023 访问量:25
如何在Yii2的网格视图中创建一个选择(下拉列表)
How can i create a select (dropdown List) inside the gridview on Yii2
问:
我尝试创建一个选择,以便稍后在ajax中发送所选值,我搜索了如何做到这一点,但我看到大多数情况下,选择必须用数据库中的数据填充,事实并非如此。我只需要用户选择两个值,我设法至少在视觉上创建了营地
我设法用这段代码做到了:
[
'attribute' => 'warehouse',
'label' => Yii::t('wms', 'Almacen'),
'vAlign' => 'middle',
'value' => function ($model) {
return Html::dropDownList('w.id', 'name',
['1' => 'Sym 1',
'2' => 'Sym 2',
],
['id' => 'Almacen', 'class' => 'form-control'
]);
},
'format' => 'raw'
],
但是在ajax上选择它的那一刻,它不取值:
$(keys).each(function(i, key) {
var order = parseInt($('tr[data-key=' + key + ']').find('.warehouse').html());
units.push({
key: key,
order: warehouse,
value: $('#pa-'+key).val()
})
});
这是一个快速的修复,但正如我所看到的那样,如果我从数据库调用它,我只能从 gridview 发送数据,但我可能错了,对 yii2 有点陌生,在这里做很多事情的方法很多。这不是一个搜索框,而是一个项目列表,人们可以在其中选择这些项目并将数据发送回去
答:
0赞
Davi Amaral
11/15/2023
#1
首先,请确保在 GridView 中正确生成下拉列表。您的代码对于这部分看起来不错,但如果 GridView 中有多行,您可能希望确保每个下拉列表都具有唯一的 id 属性,对吗?
尝试将下拉列表的 id 修改为每行的唯一值:
'value' => function ($model) {
return Html::dropDownList('w.id', 'name',
['1' => 'Sym 1', '2' => 'Sym 2'],
['id' => 'Almacen-' . $model->id, 'class' => 'form-control']
);
},
你也可以稍微改变你的 JavaScript,也许你需要调整选择器以正确定位下拉列表。
$(keys).each(function(i, key) {
var warehouse = $('#Almacen-' + key).val();
units.push({
key: key,
warehouse: warehouse,
value: $('#pa-' + key).val() // Ensure this is correct
});
});
您应该尝试确保您的 Ajax 请求被正确设置以将 units 数组发送到您的服务器。验证数据结构是否匹配。
同样在服务器端,尝试查看是否正确处理了传入的数据。这将取决于你的Yii2控制器是如何操作的。
在 JavaScript 中使用控制台日志,在 Yii2 应用程序中使用调试日志来跟踪问题可能发生的位置。
评论
0赞
Zargathronax
11/15/2023
感谢您的回答,我还有一个疑问:有没有其他方法可以生成该列表?我觉得问题出在功能上,但我没有找到其他方法
0赞
Davi Amaral
11/15/2023
你是说另一种在发球端生成函数的方法吗?
评论