【发布时间】:2015-07-15 16:33:50
【问题描述】:
我已将 Gridview 配置为将数据导出到 Excel。此外,我将页面限制设置为 15,目前有 80 条记录。
现在,每当我切换 gridview 以显示所有要导出的记录时,分页就会消失,但只有在 gridview 上显示的当前项目(15 个项目)应该全部显示为 80 时。
在玩弄了我的代码之后,我发现每当我尝试访问控制器中的数据提供程序时,就会发生这种情况,然后再将其呈现在视图中。
即使是控制器中的这个简单的 sn-p 也会导致这个问题:
var_dump($dataProvider->getModels());
如果我删除 dataprovider 访问权限,则切换可以正常工作。
我该如何解决这个问题?我真的需要访问 dataprovider 中的数据,以根据数据切换列的可见性。在渲染到视图之前。
如果这意味着什么,我正在为 Yii 2 使用 Kartik Gridview。
更新:我的代码看起来像这样
控制器
$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],
])
【问题讨论】:
-
显示您的控制器并查看此操作的代码..