【问题标题】:Update datatable cell using jquery on ajax success在ajax成功时使用jquery更新数据表单元格
【发布时间】:2020-03-01 16:25:20
【问题描述】:

想在 ajax 成功后更新数据表单元格。 最初,我的表格对于每一行都有一个共享按钮,当用户单击共享按钮时,它应该变成标签,即我想用 html 内容更新单元格内容。我也动态获得了行号,但无法通过更新数据。数据表.cell().data().draw()。 有人可以建议无错误的方法来解决这个问题。 HTML 代码

<table class="table table-striped" id="sharedFilesTable">
                                                <thead>
                                                    <tr>
                                                    <th>Sr.No</th>
                                                    <th>File Name</th>
                                                    <th>Date of creation</th>
                                                    <th>Date of updation</th>
                                                    <th>Download</th>
                                                    <th>
                                                    <!-- <input type="checkbox" class='sharecheckall' id='sharecheckall'>
                                                    <input type="button" id='share_record' class="btn btn-warning btn-sm b" value='Share' > -->
                                                    Share
                                                    </th>
                                                    <th>
                                                    <input type="checkbox" class='deletecheckall' id='deletecheckall'>
                                                    <input type="button" id='delete_record' class="btn btn-danger btn-sm b" value='Delete' >
                                                    </th>
                                                    </tr>
                                                </thead>
                                                <tbody></tbody>
                                            </table>

数据表中行数据的PHP代码

$sub_array['sr_no'] = ++$i;
                    $sub_array['file_name'] = $rows->name;
                    $sub_array['doc'] = $rows->created_at;
                    $sub_array['dou'] = $rows->updated_at;
                    $sub_array['dl'] = '';
                    $sub_array['share'] = '<button class="btn btn-warning btn-group-sm" id="share" value="'.$rows->id.'">Share</button>';
                    $sub_array['delete'] = "<input type='checkbox' class='delete_check' id='delcheck_".$rows->id."' onclick='deletecheckbox();' value='".$rows->id."'>";

/JS 代码/

var row = rownum - 1;
                         ///alert('#sharedFilesTable tbody tr:eq('+row+')');
                         //console.log(data_table['share']);
                         var tr = $('#sharedFilesTable tbody tr:eq('+row+')');
                         var row_data = dataTable.row(tr).data();
                         //console.log(row_data);
                         row_data['share'] = "<label class='text-success'>Shared</label>";
                         dataTable.row(tr).data(row_data).draw(); 
                        //alert(row_data.share);
                        dataTable.ajax.reload()

JS中数据表的初始化

dataTable = $('#sharedFilesTable').DataTable({
          'processing': true,
          'serverSide': true,
          'serverMethod': 'post',
          'ajax': {
              url: 'tpo/tpoDetails/getFiles',
              data: function(data){
                  // Read values
                  data.request = 1,
                  data.name = name
              }
          },
          'columns': [
            { data: 'sr_no'},
            { data: 'file_name' },
            { data: 'doc' },
            { data: 'dou' },          
            { data: 'dl' },
            { data: 'share' },
            { data: 'delete'}
        ],
          'columnDefs': [ {
              'targets': [], // column index (start from 0)
              'orderable': false,  // set orderable false for selected columns
          }],
          "rowCallback": function( row, data, index ) {
            //alert(data.file_name);
            $('td:eq(4)', row).html( '<a class="text-primary" href="http://localhost/ci/uploaded/'+name+'/sharedFiles/'+data.file_name+'" target="_blank">Download</a>');
          }
          //'dom': 'Bfrtip',
        });

【问题讨论】:

  • 添加html代码帮助你
  • 使用php动态生成
  • 您可以动态创建表格,然后在成功调用ajax 后将其嵌入到&lt;div&gt;

标签: jquery datatables


【解决方案1】:

你可以做一些这样的事情来更新特定的行

let table = $(tableSelector).DataTable();
let tr = $(rowSelector);
let row_data = table.row(tr).data()

row_data["share"] = "the lable text" //new data for the cell to update

table
    .row(tr)
    .data(row_data)
    .draw()
    .invalidate();

【讨论】:

  • 行中的行(行)是什么?
  • $("#sharedFilesTable").dataTable().find("tbody").on('click', 'tr', function () { rownum = this.rowIndex; }); /*使用此代码,我得到了执行事件的行号,然后使用代码的第 4 行和第 5 行*/
  • 在您的代码的第二行中,您获得了行选择器,在我的例子中,它的类只是“奇数”和“偶数”,因为我让数据表输出我的每条记录。
  • dataTable() 和 DataTable() 之间存在相当大的差异,如此链接 link 中所述,请确保您的数据表版本支持建议的 api 调用
  • 如果您发布代码,则更容易找出问题所在
猜你喜欢
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
相关资源
最近更新 更多