【问题标题】:Having trouble adding row to DataTable向 DataTable 添加行时遇到问题
【发布时间】:2016-07-25 18:44:42
【问题描述】:

我正在使用 JavaScript 对象构建一个 jquery 数据表。表构建良好。然后,根据用户的输入,我需要添加一行。这是我遇到问题的地方。我在 Datatables.net 和 SO 上对此进行了研究。我读过的所有内容都表明我正在做的事情应该有效,但事实并非如此。没有添加行。这是我初始化 DataTable 时的代码。

$("#partsList").DataTable({
        data: data,
        "order": [[1, "asc"]],
        "scrollY": "800px",
        "scrollCollapse": true,
        "paging": false,
        columns: [
            {sTitle: "InvtId", data: "invtid", "defaultContent": '', 'className': 'invtId'},
            {sTitle: "Line Nbr", data: "linenbr", 'className': 'lineNbr', "defaultContent": 'TEST'},
            {sTitle: "BF", data: "BFval", "defaultContent": ''},
            {sTitle: "BU", data: "BUval", "defaultContent": ''},
            {sTitle: "CnvFact", data: "cnvfact"},
            {sTitle: "Origin", data: "origin"},
            {sTitle: "Line Tot", data: "linetot"},
            {sTitle: "Description", data: "descr"},
            {sTitle: "Quantity Ordered", data: "ordqty"},
            {sTitle: "Quantity Ship", data: "qtyship"},
            {sTitle: "Unit", data: "unitdesc"},
            {sTitle: "Sales Price", data: "slsprice"},
            {sTitle: "Wood Cost", data: "wood"},
            {sTitle: "Treatment Cost", data: "treat"},
            {sTitle: "Adjustments", data: "trtadj"},
            {sTitle: "Misc", data: "misc"},
            {sTitle: "Freight", data: "freight"}
        ]
    });

然后,在用户输入之后,我正在收集数据。这是传递数据以添加新行的示例。这不是整个对象。只是试图确保这是清晰易读的。所有领域都顺便涵盖了。

Object {invtid: "APGC1DBTR061008", Bf: 880, Bu: 0.88, linenbr: 66536, cnvfact: 0, Adj: "-45"Bf: 880, Freight: "22"}

这是我添加新行的代码。我正在使用变量名 data 将数据传递给方法...

var tbl = $("#partsList").DataTable();
        tbl.row.add([
            data.invtid,
            data.linenbr,
            data.Bf,
            data.Bu,
            data.cnvfact,
            data.origin
        ]).draw();

这不起作用的任何原因?我到处试了又试,都找不到问题。

【问题讨论】:

    标签: javascript jquery datatables


    【解决方案1】:

    您添加了一个数组,但该表需要一个对象。

    【讨论】:

    • 是的,我现在看到了……我不知道我最初是怎么错过的,但我确实错过了……谢谢。
    • 我收回了。文档确实说您需要匹配原件。我已经编辑了我的答案以反映这一点。
    【解决方案2】:

    来自doc on row.add()

    如果使用数据结构(即数组或对象),它必须与表中其他数据的格式相同(即,如果您的表使用对象,请在此处传入具有相同属性的对象!)。

    您会注意到您的结构在多个方面与初始结构不匹配。具体来说,您从一个对象开始并尝试添加一个数组,原始表中没有任何BfBu——您将它们作为BFvalBUval——以及许多属性缺失。 (不知道add()方法是否会用空格填充缺失的属性,或许你可以试试看。)

    首先,更改您的原始表创建:

    $("#partsList").DataTable({ //etc.
    

    到这里:

    var tbl = $("#partsList").DataTable({ //etc.
    

    然后摆脱这个:

    var tbl = $("#partsList").DataTable();
    

    然后从这个开始:

    tbl.row.add({ //etc.
    

    并确保您的数据匹配。

    【讨论】:

    • 对.. 是的,不知道我最初是怎么错过的,但我做到了.. 谢谢。
    • 在我和@annoyingmouse 的观察之间,我相信你有一个解决方案。 :)
    猜你喜欢
    • 2014-05-18
    • 2011-06-10
    • 2017-09-09
    • 1970-01-01
    • 2019-04-28
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多