首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery dataTables使用fnOpen() API函数添加多个可折叠行

jQuery dataTables使用fnOpen() API函数添加多个可折叠行
EN

Stack Overflow用户
提问于 2012-06-07 10:57:25
回答 2查看 9.6K关注 0票数 5

我正在使用jQuery dataTables插件为我们的应用程序构建高级表。其中一个要求是要有“可折叠的”行(而不是组!):例如,行代表运动,并且可能有子活动。子行的结构(基本情况下)与父表中的结构相同--相同的单元格、相同的数据类型。

但是,子行不应该影响父表本身:我的意思是,每个页面的行数应该保持不变,不应该将子行与父行分开排序,它们应该始终保持绑定。因此,我不能使用fnAddData() API函数。

另一个棘手的要求是有可能有多层次的可折叠行(例如,儿童运动,等等)。

为此,我使用了fnOpen() API函数,它允许“打开”任何行,并在其上附加一个子块,您通常可以在那里插入您想要的任何内容。在dataTables 1.8.2中,它运行得很好,我使用这样的代码生成子行:

代码语言:javascript
运行
复制
$(childRowData).each(function(){
    row = $(oTable.fnOpen(row.get(0), $(this), "child_row"));
    $(row).addClass('child_row');
});

通常,它“打开”当前行(上述定义),在子行中插入数据,然后在循环中“打开”子行,向其子行添加一个子行,等等。

但是,从dataTables 1.9.0看来,它只允许“打开”父行,并且只允许打开一次。

当然,我可以创建一个子表,将$.dataTable()应用到子行,并将其插入子行,但这似乎是一个有点蹩脚和昂贵的解决方案,特别是当我们可能有3-4级深度时。

在dataTables中还有其他实现可折叠行的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-11 02:53:42

当您创建具有子子的子行时,您可能最好滚动您自己的解决方案。几周前,我用数据数据做了一些类似的事情,这是我能想到的最好的了。

票数 0
EN

Stack Overflow用户

发布于 2014-05-14 08:36:11

数据已经以某种方式更新了,现在它非常直接地将子行添加到父行:http://datatables.net/reference/api/row().child()

其中一件不太明显的事情是,如果您想对您的子行使用与父行相同的布局,您需要使用jquery选择器来传递一个节点,而不是一个字符串(在文档中写入,但我第一次忽略了它)。

这是正确的:

代码语言:javascript
运行
复制
.child(
    $(
        '<tr>'+
            '<td>'+rowIdx+'.1</td>'+
            '<td>'+rowIdx+'.2</td>'+
            '<td>'+rowIdx+'.3</td>'+
            '<td>'+rowIdx+'.4</td>'
        '</tr>'
    )
)

但这样做是错误的:(它会将您的"tr“插入到具有表大小的”tr“中,并且显然会破坏列对齐)

代码语言:javascript
运行
复制
.child(
    '<tr>'+
        '<td>'+rowIdx+'.1</td>'+
        '<td>'+rowIdx+'.2</td>'+
        '<td>'+rowIdx+'.3</td>'+
        '<td>'+rowIdx+'.4</td>'
    '</tr>'
)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10930427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档