【问题标题】:Yii CGridview Pagination renderpartialYii CGridview 分页渲染部分
【发布时间】:2014-07-18 08:58:57
【问题描述】:

我目前正在我的视图中渲染 3 个 CGridview,全部使用“renderPartial”和相同的 php 文件。这工作正常,除了使用分页时,用户选择另一页结果,它将所有 CGridviews 移动到该页面(如果可以的话)。我不确定为什么会发生这种情况或如何解决它。

我尝试了这种方法post on Yii forms,它确实修复了 CGridViews 的分页,但破坏了我的 ajax 函数和 css 样式。有关这种情况的图像,请参见下文。

这是 CGridView 模板

<div class="row btn-row">
<h2 class="admin-h1"><?php echo $title; ?></h2>
<div class="btn-block-div">
    <button class="btn addOrgBtn" id="<?php echo $title; ?>">Add</button>
</div>
</div>
<?php 
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>$title .'-table',
    'dataProvider'=>$dataProvider,
    'selectableRows'=>1,
    'hideHeader'=>true,
    'selectionChanged'=>'viewRoles',
    'columns'=>array(
        array(
            'header'=>'Name',
            'name'=>'Organization',
        ),
        'Roles',
    ),
));
?>

这是我视图中的“RenderPartial”语句:

<div class="col-md-12 col-sm-12 col-xs-12" style="margin-bottom:60px;">
<div class="col-md-4 col-sm-4 col-xs-12" id="School-grid">
    <?php echo $this->renderPartial('_roleTable', array('title'=>'School', 'model'=>$model, 'dataProvider'=>$schoolItems)); ?>
</div>
<div class="col-md-4 col-sm-4 col-xs-12" id="Classroom-grid">
    <?php echo $this->renderPartial('_roleTable', array('title'=>'Classroom', 'model'=>$model, 'dataProvider'=>$classroomItems)); ?>
</div>
<div class="col-md-4 col-sm-4 col-xs-12" id="Shared-grid">
    <?php echo $this->renderPartial('_roleTable', array('title'=>'Shared', 'model'=>$model, 'dataProvider'=>$sharedItems)); ?>
</div>
</div>

这是目前正在发生的事情:

当我在“RenderPartial”语句(如 Yii 答案)中添加“false, true”时会发生这种情况:

提前感谢您的帮助,我真的在这个问题上迷路了。

更新 作为参考,我还在 Yii 表单上问了这个问题here,因为我发现 SO 的响应时间要好得多,但是 Yii 表单的社区比较集中。

【问题讨论】:

    标签: php jquery yii pagination cgridview


    【解决方案1】:

    问题是多种因素的结合。

    首先,我需要将 CGridView 的“updateSelector”属性设置为每个表的自定义页面选择器。

    其次,我需要在“dataProvider”中设置“pageVar”以匹配选择器。

    这是一个静态示例,以使其尽可能清晰。

    数据提供者:

    new CArrayDataProvider($data, array(
            'sort'=>array(
                'attributes'=>array(
                    'Organization',
                    'Roles',
                ),
            ),
            'pagination'=>array(
                'pageSize'=>10,
                'pageVar'=>'custom-page-selector', //page selector
            ),
        ));
    

    CGridView:

    <?php 
    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>$title .'-grid',
        'dataProvider'=>$dataProvider,
        'selectableRows'=>1,
        'updateSelector'=>'custom-page-selector', //update selector
        'columns'=>array(
            array(
                'header'=>'Name',
                'name'=>'Organization',
            ),
            'Roles',
        ),
    ));
    ?>
    

    希望这对未来的人有所帮助!

    【讨论】:

      【解决方案2】:

      如果它们都对分页点击做出反应,可能是因为您使用相同的名称 (/id) 命名了所有网格视图,这是 ID 冲突的问题,

      就是这样

      【讨论】:

      • 感谢您的回复。我在创建每个 CGridview 时设置它的 id。您可以在小部件'id'=&gt;$title .'-table', 的第一行看到 $title 变量是组织类型(学校、班级等),因此每个人都被分配了一个唯一的 ID。我确实注意到这个 id 正在生成的 div 上,而不是表本身。我认为这是正确的,因为它是一个原生的 Yii 小部件,并且它们有一个“ID”字段。我将尝试在实际表本身上明确指定 id 以查看是否有效。
      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多