【问题标题】:how add row in datatable?如何在数据表中添加行?
【发布时间】:2018-09-12 05:57:46
【问题描述】:

我需要在数据表中添加行,但列的数量是可变的。

我每个尝试两个但不运行,因为 row.add 需要所有行而不是 1 到 1。

var obj = $.parseJSON(res);
       $.each(obj, function (index) {
            $.each(obj[index], function (value) {
                table.row.add([obj[index][value]]).draw();
            });
        });

是否可以在不知道列数的情况下添加行?

【问题讨论】:

  • 如果你有一个列数不定的“表”,你几乎可以消除使用数据表的全部目的。

标签: javascript jquery datatable


【解决方案1】:

编辑: 因此,如果您有可变数量的列,那么您最有可能仍然使用数据表的唯一方法是将空白值插入到不具有最大值数量的行的列中,例如:

table.row.add(['a','b','c','d']).draw();
//Above is a row which has all the 4 column values
//Beneath is a row with 3 out of 4 column values
table.row.add(['a','b',null,'d']).draw() 
/*or*/ 
table.row.add(['a','b','','d']).draw()

我不太确定您从哪里得到 row.add() 需要一次添加所有行的想法。 https://datatables.net/reference/api/row.add() 根据官方文档,此方法能够添加单行到您的表中,没有任何问题。

这里有一个 JSFiddle 证明可以将单行添加到已经存在的行中: myTable.row.add(["Airi Satou", "This was", "added", "later", "EXAMPLE", "ITEM"]).draw(); http://jsfiddle.net/bbLjzspf/8709/

【讨论】:

  • 哦,是的,在那种情况下我肯定误解了,我会更新我的答案
【解决方案2】:

首先,你的脚本有错误,可能是拼写错误,[obj][index][value] "]" 后面多了一个方括号。

var obj = $.parseJSON(res);
   $.each(obj, function (index) {
        $.each(obj[index], function (value) {
            table.row.add(
               [obj[index][value]  >]<-- One too many brackets   ).draw();
   });
});

然后是我的建议。

首先我做了两个小帮手...

一个来计算列数:

$.fn.DTbl_columnCount = function () {
    return $('th', $(this).find('thead')).length;
};

而且由于我不知道会出现什么样的数据,所以下一个是所有皮带和带扣,呃,在一个“随便”的版本中,它也接受数组;)

$.fn.DTbl_createDataColumns = function (whatever) {
    var temp = new Array($(this).DTbl_columnCount());
    var value = "";
    var type = jQuery.type(whatever);
    var isArray = (type == "array");
    if (!isArray && type != undefined) 
        value = whatever;
    for (var i = 0; i < temp.length; i++) {
        if (isArray) 
            if (whatever.length > i)
                value = whatever[i];
        temp[i] = '' + value;
        value = "";
    }
    return temp;
};

然后到你的问题,因为这些添加不是 DataTables 的一部分,我们需要在 DTbl_createDataColumns 的函数调用中获取 DataTable Id,这里使用标准参考“#example”。

var obj = $.parseJSON(res);
$.each(obj, function (index) {
    $.each(obj[index], function (value) {
        table.row.add(
           $("#example").DTbl_createDataColumns([obj[index][value])
        ).draw();
    });
});

所以这也可以:

var myArray = ["Dodaa", "Dodee"];
table.row.add(  $("#example").DTbl_getDataColumns(myArray) );

【讨论】:

    【解决方案3】:
    table.row.add(['a','b','','d']).draw() 
    

    对我没用。

    我必须这样做

    table.row.add([['a','b','','d']]).draw()
    

    此外,字典和数组的数据类型保持一致也很重要。如果我们在不同的调用中混合字典和数组,DataTable 不喜欢它。例如我们可能需要做(如果它是用字典数组初始化的)。

    table.row.add([{'hdrCol1': 'a', 'hdrCol2':'b','hdrOfCol3':'', 'hdrCol4':'d'}]).draw()
    

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多