CGridView пагинация показать "все"

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

CGridView пагинация показать "все"

Сообщение Kuklovod » 2012.02.24, 09:53

Всем привет.
Как сделать в CGridView такую фику чтоб можно было посмотреть инфу без пагинации, в режиме "туалетная бумага", когда на страницу выводится сразу вся инфа.
API по этой теме читал, но не чего не нашел, может не туда смотрел.


Прикрепляю скрин, в красной рамке то что нужно добавить.
2012-02-24 11 41 15.png
2012-02-24 11 41 15.png (21.34 КБ) 5706 просмотров

Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: CGridView пагинация показать "все"

Сообщение MetalGuardian » 2012.02.24, 11:34

можно переписать CGridView->template и добавить туда линк на "все записи". а там уже через get передать что нужно показать все записи.

Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

Re: CGridView пагинация показать "все"

Сообщение Kuklovod » 2012.02.25, 16:56

MetalGuardian писал(а):можно переписать CGridView->template и добавить туда линк на "все записи". а там уже через get передать что нужно показать все записи.
Передаю такой код в гет
http://contakt.torgi/site/index?pagenation=1 не работает
http://contakt.torgi/site/index?ajax=go ... ation=1так тоже не работает
хотя так работает для пагинации http://contakt.torgi/site/index?Good_page=3

В модели я написал так

Код: Выделить всё

    public $pagination = FALSE;

    ///.....
    в rules()
    array('id,pagination, ...', 'safe', 'on'=>'search'),

   в public function search() у меня это public function fornt()

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
            'pagination'=>array(
                'pageSize' => $this->pagination==1?100000:10,
            ),
        ));
 
Не понимаю почему не получается через гет задать $this->pagination = 1

g00dluck
Сообщения: 17
Зарегистрирован: 2010.12.03, 11:41

Re: CGridView пагинация показать "все"

Сообщение g00dluck » 2012.02.25, 17:26

может 'pageSize' => $_GET['pagination']==1?100000:10,

kukuruku
Сообщения: 1263
Зарегистрирован: 2011.02.14, 11:36

Re: CGridView пагинация показать "все"

Сообщение kukuruku » 2012.02.25, 17:58

лучше уже как в твитере делать- при прокрутке подгружать новые записи

Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

Re: CGridView пагинация показать "все"

Сообщение Kuklovod » 2012.02.25, 19:59

g00dluck писал(а):может 'pageSize' => $_GET['pagination']==1?100000:10,
да, работает)) :D

maschingan
Сообщения: 75
Зарегистрирован: 2011.01.20, 23:52

Re: CGridView пагинация показать "все"

Сообщение maschingan » 2012.02.26, 00:13

Думаю лучше pagination => false, чем pageSize => 100000

XprogeR
Сообщения: 18
Зарегистрирован: 2011.11.05, 17:44

Re: CGridView пагинация показать "все"

Сообщение XprogeR » 2012.02.26, 00:43

Kuklovod писал(а):
g00dluck писал(а):может 'pageSize' => $_GET['pagination']==1?100000:10,
да, работает)) :D
Эм... А получить кол-во записей из БД и подставить на место кол-ва страниц?
PS: При создании CActiveDataProvider вторым параметром передаёться конфигурационный массив, элемент pagination является конфигурационным массивом для пагинатора, так вот при определённых условиях передавать элементу pageSize кол-во равное кол-ву записей в таблице ну или через переменную которая отвечает за кол-во страниц на строке. Вариантов вообщем много все зависит от вашей фантазии.
maschingan писал(а):Думаю лучше pagination => false, чем pageSize => 100000
Я глядел в исходно коде вообще такой вариант не прокатит, ну и на всякий случай проверил, действительно, сбрасывается к кол-ву по умолчанию(10, установлено в фреймворке, константой).

esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: CGridView пагинация показать "все"

Сообщение esche » 2012.02.26, 12:26

XprogeR писал(а):Эм... А получить кол-во записей из БД и подставить на место кол-ва страниц?
Размера страницы (или количества записей), видимо?.. Да и лишний запрос к чему?..
maschingan писал(а):Думаю лучше pagination => false, чем pageSize => 100000
Я глядел в исходно коде вообще такой вариант не прокатит, ну и на всякий случай проверил, действительно, сбрасывается к кол-ву по умолчанию(10, установлено в фреймворке, константой).
Если глядеть лучше и пробовать правильно, то такой "вариант прокатывает":

Код: Выделить всё

        return new CActiveDataProvider($this, array(
            'pagination'=>false,
        ));
...

Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

Re: CGridView пагинация показать "все"

Сообщение Kuklovod » 2012.02.26, 13:29

На денвере все хорошо выводятся все 10839 записей, но когда я выполняю

Код: Выделить всё

            'pagination'=>$_GET['pagination']==1?false:array(
                'pageSize' => 10,
            ),
на хостинге вместо грида <div class="tbl-grid"> </div>, тоесть аякс не чего не грузит.
Если так

Код: Выделить всё

            'pagination'=>array(
                'pageSize' => $_GET['pagination']==1?1000:10,
            ),
, то грузит по 1000 записей, а если поставить 10000, то тоже аякс грузит пустоту.
В чем может быть дело?

Аватара пользователя
samdark
Администратор
Сообщения: 9172
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: CGridView пагинация показать "все"

Сообщение samdark » 2012.02.26, 22:36

В логи загляните. Скорее всего всю память скушало.

Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

Re: CGridView пагинация показать "все"

Сообщение Kuklovod » 2012.02.27, 08:49

Sam Dark писал(а):В логи загляните. Скорее всего всю память скушало.
это логи которые в папке protected/runtime/application.log? если так то я вычестил все с них, залил выполнил показать "все". Грид не появился, но записей в логе не было.

Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: CGridView пагинация показать "все"

Сообщение andy_s » 2012.02.27, 10:20

Я думаю, что надо всё-таки в еррор логи веб-сервера глядеть.

Ответить