Php Yii 2:如何在kartik网格视图中批量删除数据?

Php Yii 2:如何在kartik网格视图中批量删除数据?,php,yii2,Php,Yii2,yii2中的Kartik栅格视图提供了一个选项,可以在栅格视图中显示复选框。如何通过选中复选框删除批量数据?任何帮助都将是巨大的。这是我的密码: <?php use kartik\grid\GridView;?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'pjax'=>true, 'pjaxSet

yii2中的Kartik栅格视图提供了一个选项,可以在栅格视图中显示复选框。如何通过选中复选框删除批量数据?任何帮助都将是巨大的。这是我的密码:

<?php use kartik\grid\GridView;?>
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'pjax'=>true,
    'pjaxSettings'=>[
        'neverTimeout'=>true,
    ],
    'columns' => [
        ['class' => '\kartik\grid\CheckboxColumn'],
        ['class' => 'yii\grid\SerialColumn'],

        'hotel_id',
        'name',
        'address',
        'phone_no',
        'contact_person',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

1。将自定义类或id添加到pjax容器中

使用GridView将类或id添加到pjax容器中,这样就不会依赖于自动生成的类和id(或者在一个页面中有多个GridView小部件的情况下)

kartik\grid\CheckboxColumn
只是的扩展版本

kartik\grid\View
具有
containerOptions
,您可以在此处指定
class
,似乎
id
是自动生成的,不能使用此属性进行更改

'containerOptions' => ['class' => 'hotel-pjax-container'],
生成的输出示例:

<div class="hotel-pjax-container table-responsive" id="w0-container">...</div>
<div class="table-responsive" id="hotel-pjax-container">...</div>
生成的输出:

<div class="hotel-pjax-container table-responsive" id="w0-container">...</div>
<div class="table-responsive" id="hotel-pjax-container">...</div>
请注意,如果未在
deleteAll()
中指定任何条件,表中的所有记录都将被删除!准确地说。

您还可以在
VerbFilter
中指定操作,如下所示:

use yii\filters\VerbFilter;

/**
 * @inheritdoc
 */
public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
                'delete-multiple' => ['post'],
            ],
        ],
    ];
}
$('#hotel-pjax-container').yiiGridView('getSelectedRows');
3。编写一些javascript将所有内容结合起来

您可以按如下方式获取选定行的主键:

use yii\filters\VerbFilter;

/**
 * @inheritdoc
 */
public function behaviors()
{
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
                'delete-multiple' => ['post'],
            ],
        ],
    ];
}
$('#hotel-pjax-container').yiiGridView('getSelectedRows');
添加此javascript(例如,单击按钮):

您可以在本文中找到有关使用pjax更新GridView的更多信息。 也许可以试试这个:
$(“#hotel pjax container”).yiiGridView('applyFilter')作为备选方案;

使用资产或仅使用注册表js()包含js

试试这个,我希望这个能帮助你,而不是这个
kartik\grid\CheckboxColumn
使用这个
yii\grid\CheckboxColumn

步骤1: 在index.php中创建用于多次删除的按钮

<input type="button" class="btn btn-info" value="Multiple Delete" id="MyButton" >

尝试此操作肯定会对您有所帮助…

我通过执行以下操作成功删除了gridview Yii2中的多行:

  • 创建按钮

    <p>
        <button type="button" onclick="getRows()" class="btn btn-success">Delete Bulk</button>
    </p>
    

  • 你到底想删除什么?我想删除选中复选框的所有数据。太好了,只需要在gridview上添加
    id='w4'
    ,因为你正在执行
    $(\''''w4\')。yiiGridView(\'getSelectedRows\')不处理我的项目。如何给出id=w4和where???@Nodemon看看。。
    
    <p>
        <button type="button" onclick="getRows()" class="btn btn-success">Delete Bulk</button>
    </p>
    
    <script>
        function getRows() 
        {
            //var user_id as row_id from the gridview column
            // var list = [] is an array for storing the values selected from the gridview 
            // so as to post to the controller.
            var user_id; 
            var list = []; 
            //input[name="selection[]"] this can be seen by inspecting the checkbox from your gridview
            $('input[name="selection[]"]:checked').each(function(){
                user_id = this.value;
                list.push(user_id); 
            });
            $.ajax({
                type: 'post',
                url:'index.php?r=student-detail-update/bulk',
                data: {selection: list},
            });
        }
    </script>
    
    if ($selection=(array)Yii::$app->request->post('selection')) {
    
        foreach($selection as $id){
            $StudentDetailUpdates = StudentDetailUpdate::find()
            ->where(['user_id' => $id])
            ->all(); //....put your stuffs here
    }