Javascript 向DataTable添加行时遇到问题

Javascript 向DataTable添加行时遇到问题,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在用JavaScript对象构建一个jquery数据表。桌子很好。然后,在用户的输入上,我需要添加一行。这就是我遇到的问题。我在Datatables.net等网站上对此进行了研究。我所读到的每一件事都表明我所做的应该是有效的,但事实并非如此。未添加任何行。这是初始化DataTable时的代码 $("#partsList").DataTable({ data: data, "order": [[1, "asc"]], "scrollY": "80

我正在用JavaScript对象构建一个jquery数据表。桌子很好。然后,在用户的输入上,我需要添加一行。这就是我遇到的问题。我在Datatables.net等网站上对此进行了研究。我所读到的每一件事都表明我所做的应该是有效的,但事实并非如此。未添加任何行。这是初始化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"}
这是我添加新行的代码。我正在用变量名数据将数据传递到方法中

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

这不起作用的原因是什么?我已经尝试了,尝试了,到处搜索,但找不到问题。

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

您正在添加一个数组,但表需要一个对象

来自:

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

您会注意到,您的结构在几个方面与初始结构不匹配。具体地说,您从一个对象开始并尝试添加一个数组,原始表中没有任何
Bf
Bu
——它们是
BFval
BUval
——并且缺少一些属性。(我不知道
add()
方法是否会用空格填充缺少的属性;也许您可以试试看。)

因此,首先,更改您的原始表,并从以下内容创建:

$("#partsList").DataTable({ //etc.
为此:

var tbl = $("#partsList").DataTable({ //etc.
那就扔掉这个:

var tbl = $("#partsList").DataTable();
从这个开始:

tbl.row.add({ //etc.
并确保您的数据匹配。

来自:

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

您会注意到,您的结构在几个方面与初始结构不匹配。具体地说,您从一个对象开始并尝试添加一个数组,原始表中没有任何
Bf
Bu
——它们是
BFval
BUval
——并且缺少一些属性。(我不知道
add()
方法是否会用空格填充缺少的属性;也许您可以试试看。)

因此,首先,更改您的原始表,并从以下内容创建:

$("#partsList").DataTable({ //etc.
为此:

var tbl = $("#partsList").DataTable({ //etc.
那就扔掉这个:

var tbl = $("#partsList").DataTable();
从这个开始:

tbl.row.add({ //etc.

并确保您的数据匹配。

是的,我现在看到了。。。我不知道我最初是怎么错过的,但我确实错过了。。谢谢,我把它拿回去。医生说你需要和原件匹配。我编辑了我的答案来反映这一点。是的,我现在明白了。。。我不知道我最初是怎么错过的,但我确实错过了。。谢谢,我把它拿回去。医生说你需要和原件匹配。我编辑了我的答案来反映这一点。对。。是的,我不知道我最初是怎么错过的,但我确实。。谢谢。在我和@HappingMouse的观察中,我相信你有一个解决办法。:)正确的。。是的,我不知道我最初是怎么错过的,但我确实。。谢谢。在我和@HappingMouse的观察中,我相信你有一个解决办法。:)