【问题标题】:PHP datatables / ajax : <td> in dataPHP 数据表/ajax:数据中的 <td>
【发布时间】:2019-05-22 15:02:33
【问题描述】:

我需要更新一个旧项目 - 它有自己的后端,并且确实将行数据作为一个显示为标准 html 表的数组提供。

默认情况下,行数组中的最后一个属性有一个“编辑列”,这意味着它包含编辑图标的标记,如下所示:

$aData = array(
    "first_name"    => "John",
    "last_name"     => "Connor",
    "edit_columns"  => "<a href='#' class='edit'>Edit</a>"
);

问题 - 我的后端中还有一些表格,它们将提供几个表格单元格(它曾经是一个 html 表格),其中包含这样的数组数据:

$aData = array(
    "first_name"    => "John",
    "last_name"     => "Connor",
    "edit_columns"  => "<a href='#' class='edit'>Edit</a> </td><td> <a href='#' class='delete'>Delete</a>"
);

问题:datatables 插件会将edit_columns 视为单个单元格并过滤&lt;/td&gt;&lt;td&gt; 标记,从而在一个单元格中生成2 个超链接。

我知道我需要重构我的数据,但我的客户希望保持后端数据不受影响。那么 - 有没有办法根据需要“移动”单元格数据?

【问题讨论】:

  • 是的,但问题是,我们需要在后端创建单独的列 + 映射它,这将花费太长时间(我认为大约有 100 个列表)..
  • 你有列数据,为什么不能在edit_columns中添加新表html,并在新添加的表中添加列值。

标签: php ajax datatables


【解决方案1】:

根据您使用的数据表版本,您可以使用 javascript 监听 xhr.dt-事件,然后在数据呈现在您的表中之前修改/拆分数据。

myTable.on('xhr.dt', function (e, settings, json, xhr) {
  let data = json.data;
  for ( let i=0, dataLength=data.length; i<dataLength; i++ ) {
    let edit_columns = data[i].edit_columns.split("</td><td>");
    data[i].edit_column = edit_columns[0];
    data[i].delete_column = edit_columns[1];
  }
});

现在您可以在表格中使用创建的数据列edit_columndelete_column,就像它们是常规列一样,无需修改后端/服务器端的代码。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2015-01-11
    • 2012-02-01
    相关资源
    最近更新 更多