总是在CGridView上显示寻呼机?

时间:2011-10-21 16:01:17

标签: yii

我已经构建了一个CGridView菜单,我想始终显示寻呼机
(即使它显示所有数据并且不需要导航)
这是我目前的代码:

$this->widget('zii.widgets.grid.CGridView',
        array('dataProvider'=>$search,
              'columns' => $columns,
              'itemsCssClass' => 'list_table',
              'template' => '{pager}{summary}{items}',
              'pager' => array(
                  'cssFile'=>false,
                  'class'=>'CLinkPager',
                  'firstPageLabel' => '<<',
                  'prevPageLabel' => '<',
                  'nextPageLabel' => '>',
                  'lastPageLabel' => '>>',
                  'header' => '',
                  'footer' => $footer_btns,
                  ),
              'pagerCssClass' => 'pagination',
            ));

1 个答案:

答案 0 :(得分:1)

你可以通过覆盖renderPager()方法来实现这一点 - 但是,似乎寻呼机被放在一些文件中,所以通过只覆盖一个类来实现它的一种方法是:

覆盖zii.widgets.grid.CGridView,使用以下内容添加自定义renderPager()方法:

Yii::import('zii.widgets.grid.CGridView');
class MyGrid extends CGridView {
    public function renderPager() { ... }
}

默认的renderPager()函数是here

您要做的是查找测试寻呼机内容的行:

if($pager['pages']->getPageCount()>1) {

并更改“else”语句以放入默认的“空”分页器内容,该内容可以使用相同的<ul>结构。由于您没有为空白视图提供任何导航,因此如果在多个位置使用该数据,则无需担心该数据。这可能看起来像:

else {
        echo '<div class="'.$this->pagerCssClass.'">';
        ## YOUR CUSTOM "EMPTY PAGER" HTML HERE ##
        echo '</div>';
    }

您可能还需要定义一些额外的css类。在仅显示部分分页的页面上(例如,第一页和最后一页),您可以使用CSS重新定义“.hidden”类。