php - 插入新记录后数据表中出现不需要的分页

标签 php javascript jquery codeigniter

。 我是 jquery 数据表的新手,面临分页问题。当我插入一个新元组时,就会在表中创建一个额外的页面。

例如:假设我插入了 1 条记录,它最初在底部显示 1 页,现在如果我插入第二条记录,则会创建其他页面。我该如何解决这个问题

<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
    $('#datatables').dataTable({
        "sPaginationType":"full_numbers",
        "aaSorting":[[2, "desc"]],
        "bJQueryUI":true
    });
})
</script>

先生和我有这样的 table

                            <?php foreach($response->products as $row): ?>


            <tr>
            <td><?=$row->id;?></td>
            <td><?=$row->name;?></td>
            <td><?=$row->amount;?></td>
            <td><?=$row->type;?></td>
            <td><?=$row->description;?></td>
            <td><?=anchor('product/update/'.$row->id.'/','Edit');?></td>
            <td><?=anchor('product/delete/'.$row->id.'/','Delete');?></td>
            </tr>
                            <?php endforeach; ?>

所以,每次发生 for 循环时,我都会得到一个额外的页面...所以我会得到 10 条记录的 10 页,尽管它们显示在一页中

最佳答案

当需要向 DataTable 添加行(无论是通过动态创建的 HTML 或 Ajax 推送)时,我发现一个特别有用的插件是来自 DataTables 网站的 fnAddTr 插件。你可以在他们的API plugins page上找到它

这是适合您的代码:

$.fn.dataTableExt.oApi.fnAddTr = function ( oSettings, nTr, bRedraw ) {
    if ( typeof bRedraw == 'undefined' )
    {
        bRedraw = true;
    }

    var nTds = nTr.getElementsByTagName('td');
    if ( nTds.length != oSettings.aoColumns.length )
    {
        alert( 'Warning: not adding new TR - columns and TD elements must match' );
        return;
    }

    var aData = [];
    for ( var i=0 ; i < nTds.length ; i++ )
    {
        aData.push( nTds[i].innerHTML );
    }

    /* Add the data and then replace DataTable's generated TR with ours */
    var iIndex = this.oApi._fnAddData( oSettings, aData );
    nTr._DT_RowIndex = iIndex;
    oSettings.aoData[ iIndex ].nTr = nTr;

    oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();

    if ( bRedraw )
    {
        this.oApi._fnReDraw( oSettings );
    }
    };
}(jQuery));

像这样使用它:

var oRecords = $(".data-table").dataTable({ ... DataTables Initialization ... });

... code ...

var myTr = $("<tr><td>Field1</td><td>Field2</td></tr>")[0]; // This tr can come from anywhere, but it's very important that you either get the true DOM node by getting index zero, or by chaining .get();

oRecords.fnAddTr(myTr);

该插件负责添加行、重绘表格和更新分页!

关于php - 插入新记录后数据表中出现不需要的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968254/

相关文章:

javascript - 强制浏览器请求动态加载的图标

javascript - 加载页面后如何获取 JavaScript 文件?

jquery - 我不想受 css 影响的图像正在受其影响

php - 解析多语言提要的最佳实践

Javascript 关注 div 内的 span

php - 在中间件之后执行服务提供者

javascript - WebGL,负比例法线

javascript - 如何从表 tr td 中获取值

php - 拉维尔 |重用查询变量而不是重复查询

php - 如何使用 PEAR 正确安装 PHPUnit?