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