如何在没有“请求的未知参数”错误的情况下动态添加行

How to dynamically add a row without "Requested unknown parameter" error

本文关键字:参数 错误 情况下 添加行 动态 未知 请求      更新时间:2023-09-26

我是数据表的新手,在向数据表动态添加新行时遇到问题。

这是我的初始化:

table = $("#college-list").DataTable({
    'ajax': {
       'url': 'admin/get_college',
       'type': 'GET'
    },
    'columns': [
       { 'data': 'college_abbrev', "bSortable": true  },
       { 'data': 'college_name' , "bSortable": true },
       {
         "mData": null,
         "bSortable": false,
         "mRender": function(data, type, college) {
            return '<button type="button" class="btn btn-primary edit-college table-condensed">Edit</button>'
                   +'<button data-id="' + college.college_id  + '" type="button" class="delete-college btn btn-primary table-condensed" href="">Delete</button>';
          }
       }
    ]
});

以下是我在添加新行时使用的示例代码(cacncollege_id是变量(:

table.row.add( [
    {
       "college_abbrev": ca,
       "college_name": cn,
       "button":'<button type="button" class="btn btn-primary edit-college table-condensed">Edit</button>'
                +'<button data-id="' + college_id  + '" type="button" class="delete-college btn btn-primary table-condensed" href="">Delete</button>'
    }
]).draw();

它创建一行,但除按钮外,列为空,并给出以下错误:

数据表警告:表 ID =大学列表 - 请求未知 第 17 行的参数"college_abbrev">

如何正确添加新行?

请改用下面的代码:

table.row.add({
   "college_abbrev": ca,
   "college_name": cn,
   "college_id": college_id
}).draw();

您收到"请求的未知参数"错误,因为您要将对象数组传递给row.add(),您应该在其中传递简单对象,有关更多信息,请参阅 row.add((。

此外,您不需要在调用row.add()时构造按钮。您的mRender功能将为您处理。相反,您需要传递college_id,因为mRender需要它来生成按钮。

通常,您需要以 Ajax 脚本admin/get_college使用的相同格式将行数据传递给row.add()

> DataTable table.row.add()似乎不再接受array,现在期望object。我必须在数据表初始化期间定义columns,并将row.add().add([val1, val2])更改为.add({"v1": val1, "v2": val2})

旧方式:

var table;
$(document).ready(function() {
    table = $('#valueTable').DataTable({
        "paging": true,
        "pageLength": -1,
        "lengthMenu": [
            [-1, 5, 10, 25, 50, 100],
            ["All", 5, 10, 25, 50, 100]
        ],
        // Sort by val1, then by val2
        "order": [[0, "desc"], [1, "desc"]]
    });
});

var jRow = table.row
    .add([
        val1,
        val2
    ])
.draw()
.nodes()
.to$();

新方式:

var table;
$(document).ready(function() {
    table = $('#valueTable').DataTable({
        "paging": true,
        "pageLength": -1,
        "lengthMenu": [
            [-1, 5, 10, 25, 50, 100],
            ["All", 5, 10, 25, 50, 100]
        ],
        // Sort by val1, then by val2
        "order": [[0, "desc"], [1, "desc"]],
        'columns': [
            { 'data': '1', "bSortable": true },
            { 'data': '2', "bSortable": true },
        ]
    });
});
var jRow = table.row
    .add({
        "1": val1,
        "2": val2
    })
.draw()
.nodes()
.to$();