我已将Gridview配置为将数据导出到Excel中。此外,我已将页面限制设置为15,目前有80条记录。
现在,每当我切换gridview以显示所有要导出的记录时,分页都会消失,但只有当它应该全部为80时才显示gridview(15项)上显示的当前项目。
在使用我的代码之后,我发现每当我在视图中渲染之前尝试访问控制器中的数据提供者时就会发生这种情况。
即使控制器中的这个简单片段也会导致此问题:
var_dump($dataProvider->getModels());
如果我删除了dataprovider访问权限,则切换工作正常。
如何解决此问题?我真的需要访问dataprovider中的数据来根据数据切换列的可见性。在它渲染到视图之前。
如果这意味着什么,我正在使用Kartik Gridview for Yii 2.
更新:我的代码看起来像这样
控制器
$model = new MyModelSearch()
$dataProvider = $model->search(Yii::$app->request->queryParams);
$hasTypes = ([type1 => false, type2 => false, type3 => false]);
//this causes my error
foreach($dataProvider->getModels() as $data) {
foreach($data->myModel as $m) {
if($hasTypes[$m->type]) {
continue;
$hasTypes[$m->type] = true;
}
}
}
return $this->render('my-view',[
'model' => $model,
'dataProvider' => $dataProvider,
'hasTypes' => $hasTypes
]);
查看
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'label' => 'Type 1',
'attribute' => 'type',
'value' => 'type_value',
'visible' => $hasTypes[1] // check if type is present
],
'toolbar' => ['{export}', '{toggleData}'],
'export' => ['target' => GridView::TARGET_SELF],
'panel' => ['type' => GridView::TYPE_PRIMARY],
])