【问题标题】:DataTables 1.10.5 Ajax - how to add parameters to TR or TDs?DataTables 1.10.5 Ajax - 如何向 TR 或 TD 添加参数?
【发布时间】:2016-01-31 17:48:38
【问题描述】:

我想用 AJAX 加载数据表数据并向行和单元格添加一些参数(类或“数据”属性)。最棘手的部分是我有一个创建 javascript 的 PHP 助手。例如:

$datatables = array(
            'type' => array(
                'bAutoWidth' => false,
                'ajax' => site_url('admin/parameters/area_add_type_table_data_ajax/' . $t_id),
                'paging' => false,
                'searching' => true,
                'columns' => array(
                    array('width' => '20%', 'class' => 'text-center')
                ),
                'info' => true,
                'scrollX' => true,
            ),
        );

这个 PHP 数组是 JSON 编码的,并创建了显示表格的 javascript。

ajax 源也退出 JSON 编码的数组,例如:

$data = array('data' => array(array('SOME TEXT HERE...'), array('SOME TEXT IN ANOTHER ROW...')); exit(json_encode($data);

这段代码产生的一行是:

<tr role="row" class="odd"><td class="text-center">SOME TEXT HERE...</td></tr>

但是我需要在最后一行 (tr) 和一些单元格 (tds) 中添加一些“参数”(双星号中的属性)。

<tr role="row" class="odd" **data-id="##"**><td class="text-center" **data-content="unit_short" data-id="##"**>SOME TEXT HERE...</td></tr>

ID 取决于行中的当前数据,因此它们是可变的。

(我为单行代码示例道歉)

感谢您的帮助。如果无法以我的“PHP 方式”实现,请至少用纯 JS 编写解决方案。

【问题讨论】:

  • 我没有看到任何 Javascript 代码。也许您的意思是 $datatables 数组和 'columns' - 'class' 项? 'data' 属性从何而来?
  • @DelightedD0D 正如标题所说,v 1.10.5 :)
  • @hherger 我只需要添加单元格的内容(包含在数组 $data 中),而且只需向创建的 和 添加一些附加参数。我知道可以通过定义'columns' - 'class' 将类添加到 s。但我还需要添加具有特定 ID 值的属性“data-id”,该值对于每一行都不同。还需要为 本身添加 'data-id' 属性。

标签: php jquery json ajax datatables


【解决方案1】:

我不知道你的 PHP 助手是如何工作的,但你可以使用 createdRow 回调来做到这一点:

createdRow: function(tr, data, index) {
   $(tr).attr('data-id', '##');
   $('td', tr).eq(1)
              .attr('data-content', 'unit_short')
              .attr('data-id', '##')
}

从问题中不清楚## 是什么以及它来自哪里,但这至少是要走的路。如果没有可用的##,您可以使用index

【讨论】:

  • 我考虑过使用这个功能。也许是这样做的唯一方法。但不幸的是,不是我的 PHP 助手,因为这将在数组中写为 key=value。但是,如果我对数组使用 json_encode,比如说 array('createdRow' => 'function(...)'),那么您编写的函数的值将被编码为字符串,而不是函数本身。这将需要更改该帮助程序或完全摆脱它并使用纯 javascript 方法。
  • @Peter - 如何在页面上呈现脚本/javascript 对象文字?如果它呈现为var datatablesObject = { ...},那么您可以通过datatablesObject.createdRow = function(tr, data, index) { ...} “手动”将该函数添加到对象文字中......
  • 这是个好主意。我以为我可以摆脱这个 PHP 助手,但它会为所有数据表生成非常有用的“默认”设置。例如:$('#dataTable_categories').DataTable({"paging":true,"searching":true,"info":true,"aaSorting":[],"language":{"url":"dataTables.Slovak.json"},"columnDefs":[],"bAutoWidth":false,"iDisplayLength":10,"bLengthChange":true,"columns":[...],"scrollX":true});}); 那么您认为我可以将 $('#dataTable_categories).DataTable(...) 链接到一个变量,然后将 createdRow 函数添加到它?
猜你喜欢
  • 1970-01-01
  • 2018-03-15
  • 2019-08-31
  • 2015-12-24
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
相关资源
最近更新 更多