DataTables - 不使用Ajax扩展Child详细信息

时间:2014-05-09 14:09:41

标签: jquery datatables jquery-datatables

我正在使用jquery DataTables(版本1.10)的页面上工作。 TableData源当前仅作为呈现页面上的HTML表发送,并且工作正常。但是,我希望能够扩展行以显示详细信息。

非常类似于示例Here

但是,我目前使用的网站尚未设置任何类型的网络服务,因此我无法进行ajax调用以获取扩展信息,例如示例使用

有没有办法可以在完全呈现的页面上提供父子关系的所有必要信息?

我可以以某种方式嵌套表数据来获取此信息,还是告诉DataTables使每个其他表行成为上一个表的子项?

我在datatables论坛上发布了同样的问题:Question

3 个答案:

答案 0 :(得分:22)

您可以将子行的数据存储在父行的data属性中,并相应地更改示例中的format方法。像

这样的东西

在您的HTML中:

<tr data-child-name="test1" data-child-value="10">
    <td>ParentRow</td>
    <td>No. 1</td>
</tr>

click处理程序中(示例中的第50行):

row.child(format(tr.data('child-name'), tr.data('child-value'))).show();

format方法类似:

function format (name, value) {
    return '<div>Name: ' + name + '<br />Value: ' + value + '</div>';
}

答案 1 :(得分:1)

虽然从技术上讲这个例子并不完全使用AJAX,但它基本上是完全相同的概念。您仍然被迫使用格式函数添加行,无论格式函数是否构建HTML从AJAX获取值或硬编码到您的数据属性中,有什么区别。

据我所知,没有办法让子行从一开始就插入到HTML中,只是让扩展控件只显示子行的已存在的HTML,而不是构建子行HTML,插入它进入DOM并显示它。

答案 2 :(得分:0)

最终谁在这里。我知道这个问题已经是可以接受的答案,但是它对我没有用。 对我有用的是: 我从这里使用了确切的示例:https://datatables.net/examples/api/row_details.html 我唯一改变的是

 $(document).ready(function() {
    var table = $('#example').DataTable( {
    "ajax": "../ajax/data/objects.txt", <-- this line I changed

收件人

 $(document).ready(function() {
    var table = $('#example').DataTable( {
    "data": <%-JSON.stringify(data.table)%>,

我使用了ejs,所以我从服务器端发送了数据,并且在html中可以使用<%= data%>,该表具有表,但是在html脚本中,我必须像这样使用data.table:

<%-JSON.stringify(data.table)%>