我正在使用cgridview小部件来显示一些数据并使用分页。但我遇到的问题是我需要更换分页div。我需要将它放在页面的页脚上,如
<div id="footer">
<div id="pagination">
<!-- pagination: << < 1 2 3 4 > >> -->
</div>
</div>
但是当我检查html代码时,小部件会自动创建分页div,有些像
<div class="pager">
<!-- pagination: << < 1 2 3 4 > >> -->
</div>
是这样做的任何解决方案......
提前感谢..
已编辑:根据LDG的帖子我的代码是
$pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']);
$widget = $this->widget('zii.widgets.grid.CGridView', array(
'id' => 'request-grid',
'dataProvider' => $model->search(),
'cssFile' => Yii::app()->baseUrl . '/media/css/gridview.css',
'summaryText' => '',
'enablePagination' => true,
'template'=>'{items}',
'pagerCssClass'=>'pager',
'pager' => 1,
'pager' => array(
'cssFile' => Yii::app()->baseUrl . '/media/css/gridview.css',
'header' => false,
'firstPageLabel' => 'First',
'prevPageLabel' => 'Previous',
'nextPageLabel' => 'Next',
'lastPageLabel' => 'Last',
),
'columns' => array(
array(
'name' => 'id',
'header' => '#',
'value' => '$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)',
),
........................................
));
?>
<div id="grid-view-footer">
<div class="paginationholder">
<div id="pagination">
<div class="floatright">
<div class="pagers">
<?php $widget->renderPager(); ?>
</div>
</div>
</div>
</div>
<div class="recordspageholder">
<div class="recordsperpage">Records per page
<?php //echo $this->pagination; ?>
<?php echo CHtml::dropDownList('pageSize', $pageSize, array(1 => 1, 20 => 20, 30 => 30, 40 => 40, 50 => 50, 100 => 100), array('onchange' => "$.fn.yiiGridView.update('request-grid',{ data:{pageSize: $(this).val() }})",)); ?>
</div>
</div>
评论ldg :但是一个小问题。我使用一个下拉框来显示每页的记录。 CHtml :: dropDownList('pageSize',$ pageSize,array(1 =&gt; 1,20 =&gt; 30,30 =&gt; 30,40&gt; 40,50 =&gt; 50,100 =&gt; 100) ,array('onchange'=&gt;“$ .fn.yiiGridView.update('request-grid',{data:{pageSize:$(this).val()}})”,));.但是当我更改每页的记录时,分页不会更新。就像我在db中有20条记录一样,当我每页选择40条记录时,分页部分也在渲染。对此有任何解决方案。我将在我的问题中更新代码,请查看它。谢谢..
答案 0 :(得分:3)
您无法按部分划分小部件。您可以扩展CGridView并重新定义renderPager方法。
现在看起来像这样:
public function renderPager()
{
if(!$this->enablePagination)
return;
$pager=array();
$class='CLinkPager';
if(is_string($this->pager))
$class=$this->pager;
else if(is_array($this->pager))
{
$pager=$this->pager;
if(isset($pager['class']))
{
$class=$pager['class'];
unset($pager['class']);
}
}
$pager['pages']=$this->dataProvider->getPagination();
if($pager['pages']->getPageCount()>1)
{
echo '<div class="'.$this->pagerCssClass.'">';
$this->widget($class,$pager);
echo '</div>';
}
else
$this->widget($class,$pager);
}
您可以编写自己的方法。您可以添加带有您自己ID的div
答案 1 :(得分:3)
如果您不需要更改标记,则无需扩展任何类。 (如果你想改变寻呼机的外观,你可以在CSS中完成大部分工作。)
使用如下变量定义您的小部件:
$widget = $this->widget(
...
'template'=>'{sorter}{items}'
...
);
(将模板属性更改为最适合您的方式。)
然后你可以打电话:
$widget->renderPager();
你认为的其他地方。
答案 2 :(得分:1)
我知道这是一篇非常古老的帖子,如果有人只是在寻找一种方法来覆盖在寻呼机中该div中生成的类,请使用:
$this->widget('zii.widgets.grid.CGridView', array(
'pagerCssClass'=>'newclass',
....
生成的div将是
<div class="newclass">
....
</div>
在Yii 1.1.17中为我工作,没有尝试任何以前的。