【问题标题】:Reload only gridview in yii2在 yii2 中仅重新加载 gridview
【发布时间】:2017-02-01 11:37:13
【问题描述】:

我怎样才能在 Yii2 中的下拉 on change 事件上仅重新加载 grid-view

我知道可以通过 pjax 完成,但不确定在哪里以及如何使用代码。

我正在使用 Ajax 请求 与控制器进行通信。这是ajax代码:-

function loadGrid(level) { 
    alert(level); 
    $.ajax({ 
        type: 'GET', 
        url: 'index.php?r=villagedata/level', 
        data: {level:level}, 
        success: function(data) 
        { 
            alert("Success"); 
            $.pjax({container: '#myview'}); 
        } 
    }); 
} 

Ajax 请求 返回成功消息时,我不想重新加载我的网格。

谢谢。

【问题讨论】:

    标签: php gridview yii2 pjax


    【解决方案1】:

    完全正确,使用 Pjax。

    use yii\grid\GridView;
    use yii\widgets\Pjax;
    
    <?php Pjax::begin(['id' => 'pjax-grid-view']); ?>    
        <?= GridView::widget([
            'dataProvider' => $dataProvider,
            'columns' => [
                '...'
            ],
        ]); ?>
    <?php Pjax::end(); ?>
    

    和jQuery来检测下拉变化。

    如果下拉菜单有“下拉”ID,

    $('#dropdown').on('change', function(ev) {
         $.pjax({container: '#pjax-grid-view'})
    });
    

    【讨论】:

    • 您好,感谢您的回复。但是,网格没有重新加载。!
    • 是否调用了下拉更改事件?
    • 是的。我正在对控制器进行 ajax 调用,然后对返回它的模型执行一些查询,然后仅重新加载 gridview,我做得对吗?
    • 您将更新 gridview 调用 $.pjax({container: '#pjax-grid-view'})
    • 函数 loadGrid(level) { alert(level); $.ajax({ type: 'GET', url: 'index.php?r=villagedata/level', data: {level:level}, success: function(data) { alert("Success"); $.pjax ({container: '#myview'}); } }); } 成功后消息。
    【解决方案2】:

    试试

    $("#idyourgrid").yiiGridView("applyFilter");
    

    【讨论】:

    • 我认为这与location.reload javascript 相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多