首先,我正在使用yii2.0框架。
是的,我有一个从我的数据库中提取数据的gridview。它目前有效,如果我使用任何搜索,它将使用新数据重新加载页面。
但是我现在已经创建了一些下拉列表类别。基本上有三层类别,所以主类别子类别和子类别。目前,我有两个ajax请求,当下拉列表更改时,将填充子和子类别。 (它填充了我的数据库中的类别。)
现在我希望gridview显示链接到子类别的案例。因此,当我选择我的第一个类别然后选择我的第二个和子类别时,gridview会显示与其相关的内容。
目前,我的控制器为网格视图呈现searchModel + dataProvider,如下所示::
public function actionIndex()
{
$searchModel = new CaseSearch();
$allCategory = Category::find()->all();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'allCategory' => $allCategory
]);
}
在我看来它用这个::
显示数据<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'case_id',
'name',
'judgement_date',
'year',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
我应该如何实现这一目标?我应该创建一些_grid.php然后我可以从我的视图中呈现并在那里发送ajax请求吗?
答案 0 :(得分:3)
实现此功能的最简单方法是使用内置GridView
小部件包装Pjax
,如下所示:
use yii\widgets\Pjax;
<?php Pjax::begin(); ?>
// Place GridView code here
<?php Pjax::end(); ?>
从js中你可以触发表单提交:
$('.grid-view-selector').yiiGridView('applyFilter');
如果附加了pjax
,则会动态替换内容,而不会重新加载页面。
官方文档:
答案 1 :(得分:1)
我可能会使用GridView $ filterSelector。 并为您的自定义类别dropDown添加选择器。 您需要为SearchModel添加类别属性。 在最后 - 你会得到过滤器,你自定义字段添加到标准