YI2将从一个网格中选择的记录插入到另一个网格


YII2 Insert records selected from one grid to another

我是Yii2的新手,以前我使用自制的mvc php+extjs 4.2

所以我现在在Yii2上工作,我开始掌握简单CRUD的窍门,当我需要为父子表制作条目表单时,我的任务就开始了。我有3张桌子

  1. 佣金

    commission_id
    佣金名称
    佣金金额
    佣金百分比

  2. 佣金方案

    cscheme_id
    cscheme_name
    cscheme_amount
    cscheme_percent
    cscheme_bonus
    cscheme_description

  3. 佣金_方案_细节

    cscheme_detail_id
    commission_id
    cscheme_id

输入表单用于commission_scheme和commission_sscheme_detail。

  • 我已经使用gii生成了所有crud
  • 我修改_form.php,在活动表单后添加commission_scheme_detail的网格视图
  • 我还添加了包含佣金选择网格的模式

这是_form.php
网格视图

<?php Pjax::begin(['id' => 'pjaxCschemedetail', 
                                'timeout' => false,
                                'enablePushState' => false, 
                                'clientOptions' => ['method' => 'POST']
                                ]); 
            echo GridView::widget([
                'id'        => 'gridCschemedetail',
                'dataProvider' => $detailData,
                'columns' => [
                    ['class' => 'yii'grid'SerialColumn'],
                    'CSCHEME_DETAIL_ID',
                    'CSCHEME_ID',
                    'COMMISSION_ID',
                    [
                        'class' => 'yii'grid'ActionColumn',
                        'buttons' => [
                        'update' => function ($url, $model) {
                                    return Html::a('<span class="glyphicon glyphicon-pencil"></span>', Yii::$app->urlManager->createUrl(['commission-scheme-detail/view','id' => $model->CSCHEME_DETAIL_ID,'edit'=>'t']), [
                                                            'title' => Yii::t('yii', 'Edit'),
                                                          ]);}
                        ],
                    ],
                ],
                'responsive'=>true,
                'hover'=>true,
                'condensed'=>true,
                'floatHeader'=>true,


                'panel' => [
                    'type'=>'info',
                    'before'=>  
                                                                                                                                                          'after'=>Html::a('<i class="glyphicon glyphicon-repeat"></i> Reset List', ['index'], ['class' => 'btn btn-info']),
                                Html::button('Add', [
                                    'id'    => 'addDetailButton',
                                    'class' => 'glyphicon glyphicon-plus btn btn-success btn-ajax-modal',
                                    'value' => Url::to('@web/commission/listselect'),
                                    'data-target' => '#modal_cschemedetail',
                                ]), 
                    'showFooter'=>false
                ],
            ]); Pjax::end(); 

模态

Modal::begin([
                'id' => 'modal_cschemedetail',
                'header' => '<h4>Category</h4>',
            ]);
            echo '<div id="modal-content"></div>';
            echo Html::button('Add Selected', [
                                    'id'    => 'addCommissionsButton',
                                    'class' => 'btn btn-success btn-ajax-modal'
                                ]);
            Modal::end();
            ?>
            </div>
        </div>
        <div class="box-body">
    </div>
</div>

选择网格

<?php Pjax::begin(); echo GridView::widget([
    'id'        =>  'gridCommissionSelection',
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii'grid'CheckboxColumn'],
        ['class' => 'yii'grid'SerialColumn'],
        [
            'attribute' => 'COMMISSION_ID',
            'visible'   =>  false
        ],
        'COMMISSION_NAME',
        [
            'attribute' => 'TRANSACTION_TYPE_ID',
            'value' => 'transactionTypeName'
        ],
        'COMMISSION_DESC:ntext',
        'COMMISSION_AMOUNT',
    ]
    'responsive'=>true,
    'hover'=>true,
    'condensed'=>true,
    'floatHeader'=>true,
]); Pjax::end(); ?>


是否可以将所选记录从模态插入到细节网格视图,然后在用户单击创建按钮后,表格和网格视图中插入的记录将保存到各自的表中

如何将所选记录插入到gridview(而不是数据库表,这将在用户单击创建后完成)

我建议您简化流程。您可以在Modal中轻松保存模型(执行插入/更新),然后刷新页面或调用$.pjax.reload('#gridCommissionSelection')以使用新条目重新绘制网格视图。

另一种方法是用JS附加新行,然后通过AJAX请求保存它们。这将是一个相当肮脏和不清楚的解决方案,我想:)