【问题标题】:Nested Whgridview. Grids disappear on sort or pagination click嵌套的 Whgridview。网格在排序或分页点击时消失
【发布时间】:2014-05-03 07:44:55
【问题描述】:

我是 Yii 编程的新手。

我通过 Yiistrap/Yiiwheels 在 Yii 上使用 boostrap 库

我已经创建了一个关系表视图

相关视图本身就是一个Whgridview

第一个(主网格)有一个 TbRelationColum 点击它我会显示第二个网格(详细网格)。 当我单击该行以显示子网格时,一切正常。当我更改排序顺序或子网格的页面时,两个网格都会消失。

我知道我们应该将寻呼机的 css 类和子网格与主网格区分开来。在 Yii-Way 中具体如何做到这一点?

这是问题吗?

这是主网格的视图:

$this->widget('yiiwheels.widgets.grid.WhGridView',array(
        'id'=>'masterGrid',
        'dataProvider'=>$model->search(),
        'filter'=>$model,
        'template' => "{summary}{items}<div class=\"row-fluid\"><div class=\"pull-right\">{pager}</div></div>",
        'type' => array(TbHtml::GRID_TYPE_BORDERED, TbHtml::GRID_TYPE_STRIPED),   
        'columns'=>array(
                array(
                    'class' => 'yiiwheels.widgets.grid.WhRelationalColumn',
                    //'name' => 'multiMembers.id',
                    'type' => 'raw',
                    'header' => 'Sub Items',
                    'url' => $this->createUrl('multiGroup/ajaxSubItems'),
                    'cacheData' => false,
                    'value' => "CHtml::tag('button',array('class'=>'btn btn-primary'),'Sub Items')",
                    'htmlOptions'=>array('style'=>'width:90px;'),
                    'cssClass' => 'showSubItems',
                ),            
                'id',
                'title',
                array(
                        'class'=>'bootstrap.widgets.TbButtonColumn',
                ),
        ),
));

这是子网格:

echo CHtml::tag('h3',array(),'Sub Items Group #"'.$id.'"');
$this->widget('yiiwheels.widgets.grid.WhGridView', array(
    'id'=>'subGrid_'.$id,
    'type'=>array(TbHtml::GRID_TYPE_BORDERED, TbHtml::GRID_TYPE_STRIPED),
    'dataProvider' => $gridDataProvider,
    'template' => "{summary}{items}<div class=\"row-fluid\"><div class=\"pull-right\">{pager}</div></div>",
    'columns' => $gridColumns,
    ));

这是控制器:

    /**
     * Manages all models.
     */
    public function actionAdmin()
    {
            $model=new MultiGroup('search');
            $model->unsetAttributes();  // clear any default values
            if (isset($_GET['MultiGroup'])) {
                    $model->attributes=$_GET['MultiGroup'];
            }

            $this->render('admin',array(
                    'model'=>$model,
            ));
    }

    public function actionAjaxSubItems()
    {
        $id = Yii::app()->getRequest()->getParam('id');
        $model = $this->loadModel($id);
        if($model->numSubItems > 0) {
            $this->renderPartial('_child', array('id' => $id, 
                                                 'gridDataProvider' => $this->getGridDataProvider($id),
                                                 'gridColumns' => $this->getGridColumns()
                                            ), false, true);
        } else {
            echo 'Non ci sono Sub Items.';
        }
    }

    public function getGridDataProvider($id) {

        $sql = 'SELECT * FROM multi_member WHERE groupid = :groupid ORDER BY lastname,firstname';
        $cmd = Yii::app()->db->createCommand($sql);
        $cmd->bindParam(':groupid', $id, PDO::PARAM_INT);
        $result = $cmd->queryAll();

        $dataProvider = new CArrayDataProvider(
                    $result, array(
                        'sort' => array(
                            'attributes' => array('id','groupid','firstname','lastname','membersince'),
                            'defaultOrder' => array('lastname' => CSort::SORT_ASC, 'firstname' => CSort::SORT_ASC),
                            ),
                        'pagination' => array(
                            'pageSize' => 2,
                        ),
                      ));

        return $dataProvider;

    }

    public function getGridColumns() {

        return array('id', 'lastname', 'firstname', 'membersince');

    }

我该怎么办? 谢谢你。。

【问题讨论】:

    标签: yii yii-extensions cgridview


    【解决方案1】:

    如果您使用的扩展都扩展CGgridView,那么您应该可以使用选项'ajaxUpdate' (link to documentation)。

    尝试在其中一个网格(或两个网格)中设置'ajaxUpdate'=&gt;false,看看它是否对您有帮助。

    有时将 ajaxUpdate 设置为 false 是让一些网格按照我想要的方式运行的唯一方法...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多