DataTable 行返回未定义

Posted

技术标签:

【中文标题】DataTable 行返回未定义【英文标题】:DataTable row returns undefined 【发布时间】:2021-05-16 19:51:39 【问题描述】:

我有一个 JQuery 数据表。 Fpr 每一行我都有一个按钮,当用户单击它时,它应该在模式中显示相关字段以便编辑该行。现在我的问题是我无法获取选定的行 ID,它返回未定义。这是我的代码:

  $("#myDummyTable").DataTable(

            "processing": true, // for show progress bar
            "serverSide": true, // for process server side
            "filter": true, // this is for disable filter (search box)
            "orderMulti": false,
            //"searching": false,
            "language": 
                "url": "/language/Persian.json"
            ,
            "ajax": 
                "url": "Data/GetData",
                "type": "POST",
                "datatype": "jason"
            ,
            "columnDefs": [
                "targets": [0],
                "visible": false,
                "searchable": false
            ],

            rowId: "id",
        

             "columns": [
                 "data": "id", "name": "Id", "autoWidth": true ,

                  "data": "startDate", "name": "StartDate", "autoWidth": true ,
                  "data": "endDate", "name": "EndDate", "autoWidth": true ,
                
                defaultContent: '<input type="button" class="Edit" value="edit"/>
                

            ]

        );

            $('#myDummyTable tbody').on('click', '.Edit', function () 
                var row = myDummyTable.row(this).rowId;
                var myDummyTable = $('#myDummyTable').DataTable();
                console.log('row:' + myDummyTable.row(this).rowId);
         
                

      
);

    );

【问题讨论】:

【参考方案1】:

您可以使用render 函数,而不是使用defaultContent 列选项。这允许您自定义每个按钮,以便它可以包含相关 ID:

 data: "id", render: function ( data, type, row, meta ) 
        return '<input type="button" class="Edit" id="' + data + '" value="edit id ' + data + '"/>';
  

这里我们首先再次使用data: id(与第一列相同)。这意味着此列将使用 id 值。

然后我们使用render 函数,它允许我们通过data 变量访问id 值。

在我的示例中,我将 ID 添加到每个按钮使用的文本中。

我还为每个单元格添加了一个 id 属性,使用相同的 data 值。当然,这假设每个 ID 都是唯一的。

我的测试数据——一行的例子:


  "id": "5",
  "name": "Airi Satou",
  "start_date": "2008/11/28",
  "office": "Tokyo"

在这种情况下,佐藤爱理的 ID 是5

我的测试表:

现在,当我单击一个按钮时,以下代码将打印相关 ID:

$('#myDummyTable tbody').on('click', '.Edit', function () 
  console.log( this.id );
);

【讨论】:

以上是关于DataTable 行返回未定义的主要内容,如果未能解决你的问题,请参考以下文章

DataTable 错误:未捕获的 ReferenceError:未定义 jQuery

命令“make:datatable”未定义

GridView 未显示 DataTable 中的所有列

未捕获的类型错误:无法读取 JQuery DataTable 未定义的属性“mData”

使用 jQuery DataTable 的未定义值

DataTable row() 始终未定义,无法从数据库中检索数据