为什么在模态引导程序中GridView过滤器不起作用?

时间:2016-09-22 08:19:04

标签: jquery gridview yii2

我使用模态引导来查看GridView,当我使用过滤器并按下回车时,它不起作用,它按下提交/保存按钮对父窗口产生影响。为什么呢?

这是我的jquery函数

$(document).on('ready pjax:success', function() {

   $('#BtnModalPriceList').click(function(e) {
        e.preventDefault();

        $('#modal').modal('show')
            .find('#modalContent')
            .load($(this).attr('value'));
   });

});

这是我父模式的模态引导程序

<?= Html::button('Price List', [
    'value' => Url::to('../pricelist/list'), 
    'class' => 'btn btn-primary', 
    'id'    => 'BtnModalPriceList'
]) ?>

<?php 
    Modal::begin([
            'header' => 'Price List',
            'id' => 'modal',
            'size' => 'modal-md',                        
        ]);

    echo "<div id='modalContent'></div>";

    Modal::end();
?>

在动作列表中,我的代码像往常一样

<?php
    $gridColumns = [  
        ['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => ['onclick' => 'js:selectItem(this.value, this.checked)']],  
        [
            'attribute' => 'price', 
            'format' => ['decimal', 0],
        ],
        'date',
        [
            'attribute' => 'agen_id',
            'value' => 'agen.agen_name'
        ],        
        'remark_1:ntext',
        'remark_2:ntext',

    ] ?>
    <?php Pjax::begin(); ?> 
    <?=
    GridView::widget([
        'id' => 'kv-grid-pricelist',
        'dataProvider'=>$dataProvider,
        'filterModel'=>$searchModel,
        'columns'=>$gridColumns,        
    ]);
    ?>
<?php Pjax::end(); ?>

我错过了什么?

4 个答案:

答案 0 :(得分:2)

因为您通过ajax加载Pjax(听起来很有趣)。您需要为其分配一个ID。通过ajax加载的所有窗口小部件都需要具有用户定义的ID,因此Yii可以将它们与已加载的窗口小部件区分开来。

<?php
$gridColumns = [  
    ['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => ['onclick' => 'js:selectItem(this.value, this.checked)']],  
    [
        'attribute' => 'price', 
        'format' => ['decimal', 0],
    ],
    'date',
    [
        'attribute' => 'agen_id',
        'value' => 'agen.agen_name'
    ],        
    'remark_1:ntext',
    'remark_2:ntext',

] ?>
<?php Pjax::begin([
    //add some id here
    'id' => 'your-custom-id'
]); ?> 
<?=
GridView::widget([
    'id' => 'kv-grid-pricelist',
    'dataProvider'=>$dataProvider,
    'filterModel'=>$searchModel,
    'columns'=>$gridColumns,        
]);
?>

答案 1 :(得分:0)

最后我明白了。感谢facebook中Yii PHP框架社区的成员。 答案是 1.将模态放在活动表格之外。 2.通过提供<?php Pjax::begin(['id' => 'some-id']); ?>

等ID来使用Pjax

答案 2 :(得分:0)

Pjax :: begin([''id'=>'stav_id','timeout'=>假]);

答案 3 :(得分:-1)

添加:use yii\bootstrap\Modal;

您应该阅读thisthis