【问题标题】:Is there a way to make datatables in yii2 load data not on page load, but on keyup/enter?有没有办法让 yii2 中的数据表不是在页面加载时加载数据,而是在 keyup/enter 时加载数据?
【发布时间】:2017-04-22 22:44:43
【问题描述】:

我在 yii2 中使用 datatables 和 gridview 来显示数据。无论如何让数据表加载数据不是在页面加载,而是在 keyup 和/或提交按钮上?现在所有数据都会在页面加载时显示,然后当您键入或按 Enter 时,数据表会缩小数据范围。

【问题讨论】:

    标签: javascript php gridview datatables yii2


    【解决方案1】:

    不完全是您要求的,但也许这可能会有所帮助。 我认为您可以默认返回空结果,因为您在条件中使用了隐藏字段(默认 0,条件 1 = 字段值)。在您看来,您可以使用 javascript 设置此隐藏字段的值,然后让您的查询返回结果。重新加载你的网格。 (我的 javascript 每 5000 毫秒重新加载一次网格)

    function reloadGrid() {
        $('#access-log-grid').yiiGridView('applyFilter');
    }
    
    $(document).ready(function() {
    
        $('#pjax-access-log-index').on('pjax:start', function() {
            if (timer) clearTimeout(timer);
        })
    
        $('#pjax-access-log-index').on('pjax:end', function() {
            timer = setTimeout(reloadGrid, 5000);
        })
    
        timer = setTimeout(reloadGrid, 5000);
    });
    

    【讨论】:

    • 我在哪里将默认设置为空?你能给我举个例子吗?另外,我必须修改什么文件才能做到这一点?
    • 在您的搜索模型中,添加一个新的公共属性 public $block。在函数 rules() 中,设置 '$block' 默认值 1。查询: if ($this->block == 1) $query->where('0=1')
    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多