Grid Extensions (yii2-grid-select => Yii2 extension to keep selected rows in GridView when sorting and pagination.)
Extensions ini diperuntukan untuk kebutuhan select data multiple di grid view yii2 dengan memakai checkbox.
permasalahan yang ada, jika kita memakai 'class' => 'yii\grid\CheckboxColumn' dari yii, ada kekurangan,
dimana saat kita telah melakukan select data, dan kita melakukan searching, filtering, sorting, paging (pjax request),
data selected yang sebelumnya menjadi hilang, dengan extension ini, dapat memperbaiki kekurangan tersebut.
semoga bermanfaat..., (*1)
Installation
Disarankan Install melalui composer composer.
jalan kan perintah, (*2)
php composer.phar require --prefer-dist ichsanmust/yii2-grid "@dev"
atau tambahkan, (*3)
"ichsanmust/yii2-grid": "@dev"
di require section file composer.json
. lalu jalan kan composer update, (*4)
Install From the Archive
Download the latest release dari sini realeses., dan extract di project.
di config aplikasi , tambakan aliases dan path untuk extension ini., (*5)
...
return [, (*6)
'aliases' => [
'@ichsanmust/grid' => 'path/to/your/extracted',
// contoh: '@ichsanmust/grid' => '@app/extensions/ichsanmust/yii2-grid',
]
];
..., (*7)
Contoh Penggunaan
// controller, (*8)
public function actionIndex()
{
$searchModel = new ProductSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
// view, (*9)
title = 'Products';
$this->params['breadcrumbs'][] = $this->title;
?>
'pjax-product-gridview',
'enablePushState'=>false,
'timeout'=>100000,
]);
?>
= GridView::widget([
'id'=>'crud-gridview-ichsanmust',
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'_pjax' =>'pjax-product-gridview',
'class' => 'ichsanmust\grid\CheckboxColumnSelectTools', // class select nya memakai ini
'name'=>'choose', // nama untuk checkbox
'uniqueValue'=>'id_product', // value unique yang akan di select
//'valueInit'=> array(3,2), // value data selected saat inisiasi gridview
/*'valueInitSingle'=> function ($model, $key, $index, $column) { // value data selected per single data
if($model->STATUS == 3){
return true;
}else{
return false;
}
},
*/
//'disabledCheckboxOnValue' =>true, // saat valueInit ada datanya, checkbox yang ter select akan di disabled
//'checkedCheckboxOnValue' => true, // saat valueInit ada datanya, checkbox yang ter select akan di checked
],
'id_product',
'product_name',
'id_product_category',
'stok',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
registerJs(
'
$("#pjax-product-gridview").on("pjax:send", function() { // beforeSend
$("#loader").show();
})
$("#pjax-product-gridview").on("pjax:complete", function() { // complete
retainCheckedSingle(); // ini harus di deklarasikan
setCheckedChooseAll(); // ini harus di deklarasikan
$("#loader").hide();
})
'
);
?>
<a id ="getSelected" class ="btn btn-success" > Get Selected Value </a>
<a id ="clearSelected" class ="btn btn-success" > clear Selected Value </a>
<a id ="addSelected" class ="btn btn-success" > add Selected 3 and 2 </a>
registerJs(
'
jQuery(document).on("click","#getSelected",function(e){
console.log(getListChecked()); // ini yang di olah
alert(getListChecked()); // ini yang di olah
return false;
});
jQuery(document).on("click","#clearSelected",function(e){
removeAll();
return false;
});
jQuery(document).on("click","#addSelected",function(e){
var arrayData =["3","2"];
addSelected(arrayData);
return false;
});
'
);
?>
atau bisa seperti ini
<a id="getSelectedonclick" onclick="getCheckboxData()" class="btn btn-main"> get data </a>
catatan