Поясню на примере. Например, человек зашел на грид и смотрит по 20 элементов на странице. Перешел на 2-ую страницу, т.е. перед ним с 21 до 40 элемента.
Далее он решил смотреть по 10 элементов на странице и тут надо не только сменить количество элементов но и изменить текущую открытую страницу, чтобы он продолжал смотреть с того элемента на котором был открыт грид. В данном примере надо сменить страницу на 3-ю, чтобы отображалось с 21 до 30 элемента. И так далее.
Изначально был реализован ajax-грид на базе CGridView, но текущую страницу он не переопределял. Для этой цели в init я добавил код
Код: Выделить всё
$this->dataProvider->getData();
$pag = $this->dataProvider->getPagination();
$updatePageNum = self::$prev_perPage?self::$prev_perPage:0;
if($updatePageNum){
$pageNum = $pag->getCurrentPage();
$seeItem = ($pageNum)*$updatePageNum;
$page = intval($seeItem/$pag->pageSize);\
$pag->setCurrentPage($page);
$this->dataProvider->setPagination($pag);
self::$prev_perPage = 0;
}
Проблема возникает именно со сменой текущей страницы. При этом симптомы такие:
- делаем смену количества элементов на странице в первый раз - все ок, смена происходит, страница меняется на правильную.
- делаем смену назад на предыдущее количество - тут начинаются глюки, новый номер страницы которой стал отображать в конце первого теста игнорируется/не сохраняется. в пагинаторе по прежнему та страница на которой были перед началом всей этой процедуры...
Как быть? Из-за чего так может глючить?