Проблема заключается в следующем. В админке необходимо сделать страницу, в которой будут несколько таблиц с сортировками, и пагинацией. Каждая такая таблица должна быть на отдельной закладке( Tab' е).
Пока таблицы вынес в отдельные представления :
Код: Выделить всё
<div class="grid no-border">
<div class="grid-header">
<i class="fa fa-table"></i>
<span class="grid-title">Список представителей</span>
<div class="pull-right grid-tools">
<a data-widget="collapse" title="Collapse"><i class="fa fa-chevron-up"></i></a>
<a data-widget="reload" title="Reload"><i class="fa fa-refresh"></i></a>
<a data-widget="remove" title="Remove"><i class="fa fa-times"></i></a>
</div>
</div>
<div class="grid-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th><?= $sortm->link('id') ?></th>
<th><?= $sortm->link('F_NAME','Фамилия') ?></th>
<th><?= $sortm->link('L_NAME','Имя') ?></th>
<th><?= $sortm->link('S_NAME','Отчество') ?></th>
<th><?= $sortm->link('EMAIL','email') ?></th>
<th><?= $sortm->link('roles','Роль') ?></th>
<th>Управление</th>
</tr>
</thead>
<tbody>
<? foreach($manags as $model): ?>
<tr>
<td><?= $model->id ?></td>
<td><?= $model->F_NAME ?></td>
<td><?= $model->L_NAME ?></td>
<td><?= $model->S_NAME ?></td>
<td><?= $model->EMAIL ?></td>
<td><?= $model->roles ?></td>
<td>
<a href="#"><i class="fa fa-check bg-green action"></i></a>
<a href="#"><i class="fa fa-pencil bg-blue action"></i></a>
<a href="#"><i class="fa fa-crop bg-red action"></i></a>
</td>
</tr>
<? endforeach; unset($model);?>
</tbody>
</table>
<? $this->widget('LinkPager', array(
'pages'=>$pags,
)) ?>
</div>
</div>
</div>
Код: Выделить всё
<? $this->renderPartial('_exp_grid',array('sort'=>$sort,'pages'=>$pages,'models'=>$models)); ?>
Код: Выделить всё
public function actionManageUsers()
{
$criteria_exp = new CDbCriteria();
$criteria_exp->condition = "roles='Exp' OR roles='Exp1' OR roles='Exp2' OR roles='Exp3'";
$count_exp = Users::model()->count($criteria_exp);
$pages_exp = new CPagination($count_exp);
$pages_exp->pageSize = 10;
$pages_exp->applyLimit($criteria_exp);
$sort_exp = new CSort();
$sort_exp->attributes = array('id','F_NAME','L_NAME','S_NAME','EMAIL','roles');
$sort_exp->applyOrder($criteria_exp);
$experts = Users::model()->findAll($criteria_exp);
$criteria_man = new CDbCriteria();
$criteria_man->condition = "roles='Manager' ";
$count_man = Users::model()->count($criteria_man);
$pages_man = new CPagination($count_man);
$pages_man->pageSize = 5;
$pages_man->applyLimit($criteria_man);
$sort_man = new CSort();
$sort_man->attributes = array('id','F_NAME','L_NAME','S_NAME','EMAIL','roles');
$sort_man->applyOrder($criteria_man);
$managers = Users::model()->findAll($criteria_man);
$this->render('manage_users', array(
'manags'=>$managers,
'pags'=>$pages_man,
'sortm'=>$sort_man,
'models'=>$experts,
'pages'=>$pages_exp,
'sort'=>$sort_exp,
));
- 1) пагинация не ajax, и следовательно при попытке перейти на 2 страницу 2-ой таблицы , главная страница перезагружается, и отображается первая закладка.
2)когда запускается сортировка, она идет "в лоб" , и соответственно пересортирует все таблицы. Как от этого уйти не знаю, не реализовывал.
Подскажите пожалуйста как правильно реализовать подобное ? с CGridView сам глубоко не копался, пробовал его использовать но не разобрался. Читал про использование CListView но не использовал.
Как можно реализовать задуманное ?