An example extending example # 1 with grouping by multiple columns (second and third columns) that are sorted. The third column has been setup as a sub group of second column (thereby rendering a nested grouping). Note that subGroupOf
property is necessary within the child column for this to be meaningful and effective.
Not seeing the updated content on this page! Hard refresh your browser to clean cache for this page (e.g. SHIFT-F5 on Windows Chrome)
echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'showPageSummary' => true, 'pjax' => true, 'striped' => true, 'hover' => true, 'panel' => ['type' => 'primary', 'heading' => 'Grid Grouping Example'], 'toggleDataContainer' => ['class' => 'btn-group mr-2 me-2'], 'columns' => [ ['class' => 'kartik\grid\SerialColumn'], [ 'attribute' => 'supplier_id', 'width' => '310px', 'value' => function ($model, $key, $index, $widget) { return $model->supplier->company_name; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(Suppliers::find()->orderBy('company_name')->asArray()->all(), 'id', 'company_name'), 'filterWidgetOptions' => [ 'pluginOptions' => ['allowClear' => true], ], 'filterInputOptions' => ['placeholder' => 'Any supplier'], 'group' => true, // enable grouping ], [ 'attribute' => 'category_id', 'width' => '250px', 'value' => function ($model, $key, $index, $widget) { return $model->category->category_name; }, 'filterType' => GridView::FILTER_SELECT2, 'filter' => ArrayHelper::map(Categories::find()->orderBy('category_name')->asArray()->all(), 'id', 'category_name'), 'filterWidgetOptions' => [ 'pluginOptions' => ['allowClear' => true], ], 'filterInputOptions' => ['placeholder' => 'Any category'], 'group' => true, // enable grouping 'subGroupOf' => 1 // supplier column index is the parent group ], [ 'attribute' => 'product_name', 'pageSummary' => 'Page Summary', 'pageSummaryOptions' => ['class' => 'text-right text-end'], ], [ 'attribute' => 'unit_price', 'width' => '150px', 'hAlign' => 'right', 'format' => ['decimal', 2], 'pageSummary' => true, 'pageSummaryFunc' => GridView::F_AVG ], [ 'attribute' => 'units_in_stock', 'width' => '150px', 'hAlign' => 'right', 'format' => ['decimal', 0], 'pageSummary' => true ], [ 'class' => 'kartik\grid\FormulaColumn', 'header' => 'Amount In Stock', 'value' => function ($model, $key, $index, $widget) { $p = compact('model', 'key', 'index'); return $widget->col(4, $p) * $widget->col(5, $p); }, 'mergeHeader' => true, 'width' => '150px', 'hAlign' => 'right', 'format' => ['decimal', 2], 'pageSummary' => true ], ], ]);
Comments & Discussion
Note
You can now visit the Krajee Webtips Q & A forum for searching OR asking questions OR helping programmers with answers on these extensions and plugins. For asking a question click here. Select the appropriate question category (i.e. Krajee Plugins) and choose this current page plugin in the question related to field.
The comments and discussion section below are intended for generic discussions or feedback for this plugin. Developers may not be able to search or lookup here specific questions or tips on usage for this plugin.