这是我的gridview。我想将键和textinput发送到控制器以再次将值发送到同一页面中的另一个gridview。
'columns' => [
[
'class' => 'yii\grid\CheckboxColumn',
'checkboxOptions' => function($model) {
return ['value' => $model->m_id, 'data' => ['key' => $model->m_id]];
}
],
'm_name',
[
'label' => 'จำนวน',
'value' => function(){
return Html::textInput('od_amount', null, ['id' => 'od_amount']);
},
'format' => 'raw'
],
<?php
$this->registerJs('
$("#btn-add-group").click(function(){
var id_cases = $("#gridview-id").yiiGridView("getSelectedRows");
?>
答案 0 :(得分:0)
getSelectedRows
仅返回键。您可以尝试按以下方式获取网格容器中的所有“已选中”复选框:
$("#gridview-id").find('[type="checkbox"]:checked').each(function(){ console.log(this); })
由此,您应该可以使用$(this).data('key')
和$(this).attr('value')
代替console.log
。
这将假定您只有一个复选框列,但如果有更多复选框,则可以将一个类添加到一个复选框列,然后在jQuery选择器中使用它。
答案 1 :(得分:0)
如果要在控制器中获取密钥
示例:
<?=Html::beginForm(['Gridselected'],'post');?>
<?= GridView::widget([
'id' => 'griditems',
'dataProvider' => $dataProvider,
'columns' => [
'id',
[
'label' => 'จำนวน',
'value' => function ($model, $key, $index) {
return Html::textInput("od_amount[$key]", null, ['id' => "od_amount[$key]"]);
},
'format' => 'raw'
],
//...
['class' => 'yii\grid\CheckboxColumn'],
],
]); ?>
<?=Html::submitButton('Send', ['class' => 'btn btn-primary']);?>
<?= Html::endForm();?>
在控制器中:
public function actionGridselected(){
if ( Yii::$app->request->post() ) {
$select = (array)Yii::$app->request->post('selection'); //checkbox (array)
$odAmount=(array)Yii::$app->request->post('od_amount');
$Provider = new \yii\data\ActiveDataProvider([
'query' => yourModel::find()->->where(['id' => $select]),
]);
// for Example: Print all the amount of inputs that are checked (in checkboxcolumn)
foreach ($odAmount as $key => $value) {
if (in_array($key, $arr_select)){
$od_value[] = $value;
}
}
print_r($od_value);
}
}