Drop down menu Yii在下拉更改时刷新网格

Drop down menu Yii在下拉更改时刷新网格,drop-down-menu,yii,Drop Down Menu,Yii,在YII views文件夹中,我有test module和admin.php文件来管理下面的内容,我在这里呈现表单,我把表单和下拉列表的代码放在这里,我想要下拉列表中状态更改的网格刷新值 假设我选择“Approved”,然后显示状态为Approved的数据 <?php Yii::app()->clientScript->registerScript('dropdown', " $('.dropdown-form form').submit(function(){ $(

在YII views文件夹中,我有test module和admin.php文件来管理下面的内容,我在这里呈现表单,我把表单和下拉列表的代码放在这里,我想要下拉列表中状态更改的网格刷新值 假设我选择“Approved”,然后显示状态为Approved的数据

    <?php
Yii::app()->clientScript->registerScript('dropdown', "

$('.dropdown-form form').submit(function(){
$('#testimonial-grid').yiiGridView('update', {
        data: $(this).serialize()
    });
    return false;
});
");
?>
<h1>Manage Testimonials</h1>
<div class="dropdown-form">
<?php $this->renderPartial('_dropdownform',array(
    'model'=>$model,
)); ?>
</div><!-- search-form -->
    <?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'testimonial-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'id',
        'created_by',
        'test_name',
        'test_email',
        'comments',
        'created_at',
        /*
        'status',
        'approved_on',
        'approved_by',
        */
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

例如,可以使用CGridView属性链接栅格过滤器

$this->widget('CGridView', array(
    'id' => 'my-list',
    'filterCssClass' => '#filterFormId .filter',
还有过滤形式

<?php $form = $this->beginWidget('CActiveForm', array(
    'id' => 'filter-fomr-id',
)); ?>

<div class="filter clearfix">
    <?php echo $form->dropDownList($model, 'name', [0=>'all', '1'=>'some else']); ?>
</div>


替换特定于表单的jquery选择器上的#FilterPerformId.filter。换句话说,为过滤器窗体设置id属性,然后使用“#THISID.row”。

谢谢@Alex的帮助,但我成功地为网格创建了filterdropdown,代码如下,但请告诉我,我希望网格仅显示status=New的值,在页面加载时如何显示status为New的网格值 但首先我粘贴了网格下拉过滤器的工作代码 这是我的admin.php文件

    <?php
$this->breadcrumbs = array(
    'Testimonials' => array('index'),
    'Manage',
);
$this->menu = array(
    array('label' => 'List Testimonial', 'url' => array('index')),
    array('label' => 'Create Testimonial', 'url' => array('create')),
);
?>
<h1>Manage Testimonials</h1>
<!-----------drop down form------------->
<?php
Yii::app()->clientScript->registerScript('dropdownfilter', "

$('.dropdown-form form #staticid').change(function(){
    $.fn.yiiGridView.update('testimonial-grid', {
        data: $(this).serialize()
    });
    return false;
});
");
?>
<div class="dropdown-form">
    <?php
    $this->renderPartial('_dropdownfilter', array(
        'model' => $model,
    ));
    ?>
</div><!-- search-form -->
<?php
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'testimonial-grid',
    'dataProvider' => $model->search(),
   // 'filter' => $model,
    'columns' => array(
        'id',
        'created_by',
        'test_name',
        'test_email',
        'comments',
        'created_at',
        'status',
        array(
            'class' => 'CButtonColumn',
        ),
    ),
));
?>

现在我想知道,当我第一次触发actionadmin时,它会在gridview文件中显示status=New值,请确保您有以下代码:

Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
    $('.search-form').toggle();
    return false;
});
$('.search-form form').submit(function(){
    $('#ad-grid').yiiGridView('update', {
        data: $(this).serialize()
    });
    return false;
});
");
然后在CGridView定义中:

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'testimonial-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        ...
        array(
            'name'=>'Status',
            'filter'=>CHtml::dropDownList('YourModel[status]', $model->status, array(0 => 'New', 1 => 'Approved', 2 => 'Declined'), array('empty' => '--all--') ),
            'value'=>'( $data->status == 0) ? "New": ( $data->status == 1) ? "Approved" : "Declined"',
            'htmlOptions' => array(
                'style' => 'width: 40px; text-align: center;',
            ),
        ),
        ...
        array(
            'class'=>'CButtonColumn',
        ),
    ),
));
// CGridView 
为了在
'value'
部分保存if/else,您可以在模型中实现一个方法,该方法返回与整数关联的字符串

它工作得很好,只需使用默认值,您可以根据需要进行编辑

更新

添加了对空状态的支持,不过滤查询结果

错误:语法错误,无法识别的表达式:#鉴定网格。#筛选fomr id。筛选输入,#鉴定网格。#筛选fomr id。筛选选择将某些id设置为筛选表单,然后在$model->unsetAttributes()之后使用#THISID.rowIn actionAdmin控制器add$模型->状态='新';
<div class="wide form">
<?php
$form = $this->beginWidget('CActiveForm', array(
    'action' => Yii::app()->createUrl($this->route),
    'method' => 'get',
));
?>
<div class="row">
    <?php
    echo CHtml::dropDownList('staticid', '', array('0' => 'New', '1' => 'Approved', '2' => 'Declined'), array(
        // 'onChange' => 'this.form.submit()',
        'ajax' => array(
            'type' => 'POST', //request type
    )));
    ?>
</div>
<?php $this->endWidget(); ?>
public function actionAdmin() {
    $model = new Testimonial('search');
    $model->unsetAttributes();  // clear any default values
    if (isset($_GET['staticid'])) {
        $getStatus = $_GET['staticid'];
        if ($getStatus == 0)
            $status = 'New';
        if ($getStatus == 1)
            $status = 'Approved';
        if ($getStatus == 2)
            $status = 'Declined';
        $model->status = $status;
    }
    if (isset($_GET['Testimonial']))
        $model->attributes = $_GET['Testimonial'];
    $this->render('admin', array(
        'model' => $model,
    ));
}
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
    $('.search-form').toggle();
    return false;
});
$('.search-form form').submit(function(){
    $('#ad-grid').yiiGridView('update', {
        data: $(this).serialize()
    });
    return false;
});
");
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'testimonial-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        ...
        array(
            'name'=>'Status',
            'filter'=>CHtml::dropDownList('YourModel[status]', $model->status, array(0 => 'New', 1 => 'Approved', 2 => 'Declined'), array('empty' => '--all--') ),
            'value'=>'( $data->status == 0) ? "New": ( $data->status == 1) ? "Approved" : "Declined"',
            'htmlOptions' => array(
                'style' => 'width: 40px; text-align: center;',
            ),
        ),
        ...
        array(
            'class'=>'CButtonColumn',
        ),
    ),
));
// CGridView