gridview - Yii2:加载 index.php 时如何不填充 GridView
问题描述
我有一个使用Gii Code Generatorindex.php
生成的文件。它有一个 GridView,其中包含我的数据库表的数据。它有 536000 行,所以它移动得非常慢。有时甚至超过 30 秒,所以页面根本没有加载。
我想启动我的索引文件(http://localhost:8080/persons/index.php),但使用一个空的 GridView(或没有 GridView),当用户使用文件的过滤器时可以填充它_search.php
。
我的 index.php 文件:
<? Pjax::begin() ?>
<? echo $this->render('_search', ['model' => $searchModel]) ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'id',
'name',
'details',
],
]) ?>
<? Pjax::end() ?>
我的 _search.php 文件:
<?php $form = ActiveForm::begin([
'action' => ['index'],
'method' => 'get',
'options' => [
'data-pjax' => 1
],
]) ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'datails') ?>
<div class="form-group">
<?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
<?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
</div>
<? ActiveForm::end() ?>
我的 peopleController.php 文件:
public function actionIndex()
{
$searchModel = new PersonsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
解决方案
您可以使用查询参数,例如“限制”并将其提供给索引页面和其他页面。而不是在 PersonsSearch 模型中的 DataProvider 构造中使用它。或使用“分页”属性。
public $limit = null;
public function search()
{
$query = Person::find();
if ($this->limit) {
$query->limit($this-limit);
}
$provider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 20,
],
]);
return $provider;
}
推荐阅读
- php - 如何更新 web.config 现在内部显示内页
- c# - 如何在 c#.net 中从 postgres 检索数据到文本框
- c++ - 当我忘记增加迭代器时的 std::bad_alloc
- sql - SQL语句提取字符串中的最后一个单词?
- android - nativescript-background-http 演示服务器上传不正确
- c# - 将属性添加到表单并使其在设计器中可见
- firebase - Flutter Streambuilder 不断重建
- python - 如何修复 Jupyter Notebook pandas 错误(OSError:[WinError 193] %1 不是有效的 Win32 应用程序)
- firebase - firebase 函数组部署错误(未定义)
- c# - 在 Visual Studio 2010 中使用 plsql 的 C#