Php Yii 2:如何在kartik网格视图中批量删除数据?
yii2中的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
<?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
}