使用DataTables 1.10。18
我正在尝试使用。行()。child()
方法,如文档中所述(https://datatables.net/reference/api/row().child())将子行添加到表中。
我在serverSide
模式下使用DataTables,但是我的表的一行的呈现标记如下所示:
<tbody>
<tr>
<td><a class="expand-row" href="/get-data.json"> <i class="fa-plus"></i> </a></td>
<td>Foo</td>
<td>Bar</td>
<td>Baz</td>
<td>2020-02-02</td>
</tr>
</tbody>
我已经编写了js,它处理通过呈现的“plus”图标的点击。fa plus
类在上面的标记中。这是一个很棒的“加号”图标。详情如下:
$('table tbody').on('click', '.expand-row', function (e) {
e.preventDefault();
var tr = $(this).closest('tr');
var row = $(this).closest('table').DataTable().row(tr);
if (row.child.isShown()) {
row.child.hide();
tr.removeClass('active');
$(this).find('i').toggleClass('fa-minus fa-plus');
} else {
row.child('Loading...').show();
// Ajax request to get child row data
$.get($(this).attr('href')).done(function(response) {
// Add the child row data to the table and show it
row.child(response).show();
});
tr.addClass('active');
$(this).find('i').toggleClass('fa-plus fa-minus');
}
});
这将扩展行,显示消息加载然后对单击图标的href
属性进行ajax调用,在本例中为/get-data.json
。这个ajax调用的目的是获取要在子行中显示的数据。它还将FontAw0013图标切换为“减号”,以指示子行可见(展开行)。
到目前为止,所有这些都有效。
我遇到的问题是这一行:
row.child(response).show();
这在显示子行的意义上起作用。但是行占据了表的全部宽度,在本例中,表有5列。假设ajax响应
包含文本“abc 123”,则呈现的标记如下:
<tr>
<td colspan="5">
abc 123
</td>
</tr>
colspan="5"
由DataTables自动添加,因为根据链接的文档:
每个子行通常包含一个单元格,该单元格的colspan
属性设置为跨越整个表格宽度,因此单元格的内容覆盖整个表格宽度。但是,也可以传入一个tr
元素,该元素有多个单元格(表中每列一个单元格),以显示与主表相同的列结构中的子行数据。
我是我的案例我希望标记如下:
<tr>
<td></td>
<td></td>
<td colspan="2">
abc 123
</td>
<td></td>
</tr>
上述操作的效果是,文本“abc 123”出现在第3列和第4列标题下方,因为它从第3列开始,并具有colspan=“2”
的含义,即它会上升到第4列。
我尝试了以下基于文档的方法:
row.child(
'<tr>' +
'<td></td>' +
'<td></td>' +
'<td colspan="2">' +
response +
'</td>' +
'<td></td>' +
'</tr>'
).show();
但这表现为。。。
<tr>
<td colspan="5">
<tr>
<td></td>
<td></td>
<td colspan="2">abc 123</p>
<td></td>
</tr>
</td>
</tr>
...这不是我想要的。
它正在包装一个
我不知道如何修复此问题,或指定我不希望使用该
您提供的datatables链接对此进行了描述。
https://datatables.net/reference/api/row().child()
row().child( data [, className ] )
要在子行中显示的数据可以通过多种不同的方式给出:
>
字符串-作为字符串,创建单个子行,并将数据插入该子行中的单个单元格。
节点-作为tr元素,tr元素用作子行。如果您希望在子行中定义多个列,这将非常有用。
jQuery-一个jQuery对象,其中包含要添加的节点。如果jQuery结果集中有多个元素,它们将作为多行添加。如果节点是tr元素,则将其视为子行,否则将自动创建行和单元格,并将jQuery结果集中的节点插入其中。
数组-通过将上述任何选项作为数组传入,可以一次添加多个子行。例如,您可以传入一个包含两个字符串元素的数组,以创建两个子行,每个子行都使用字符串内容。
您传入了一个字符串,因此它将该字符串包装到colspan tr中
您应该能够通过传入jquery对象来解决此问题,这样它就不会将其包装在自己的tr中:
var tr = $("<tr><td></td><td></td><td colspan='2'>" + response + "</td><td></td>");
row.child(tr).show();
你提到:
也可以传入一个tr元素
这是上面的第二个选项,在这里传入DOM节点(tr元素),而不是字符串中的tr。可能是这样的:
var tr = document.createElement("tr");
row.child(tr).show();
但是上面的tr需要额外的工作来createElement("td")等添加您需要的单元格和响应值(而jQuery解析字符串为您做这件事)。
我试图创建一个Firebase cloud函数,它对实时数据库中的新“事件”做出反应,并在相应用户的通知列表中添加一个“通知”对象。我成功地获得了新的事件信息,向相应的用户推送了一个通知,但不是以列表格式(而是以hashmap格式)。 所以我试着得到孩子的数量,以便用好的索引推送新的通知。在那种情况下,我不知道如何管理promise。
这就是我目前所拥有的。 名为PopupContainer的根元素 我也有控制器。 当然,当我添加组件时,它们直接在StackPane下面,因为它是布局的根。我试图重写getChildren()方法以返回VBox子级,但我检测到了子级循环。我不想以编程方式添加它们,因为在应用程序中有超过300个这样的情况,但是我可以添加新的标记(而不是例如其他的东西)。谢谢!
我正在为一个Delphi可执行文件开发一个C++的DLL项目。此可执行文件具有如下结构: 例如: 我试着做了这样的课程: 它给了我这个: 那不是我想要的。 我可以通过使用一个数组来实现我的目标: 但是,我被迫有一个固定的长度,这仍然不是我想要的。 我想了一个肮脏的解决办法: 但要解析、读取和写入它真的很难。 这样的问题有没有干净的解决方案? 顺便说一下,这不是一个XY问题
问题内容: 这是我的第一篇文章!希望您能帮帮我!:-) 我使用了NotePadExample提供的来自开发人员文档的代码来创建数据库。现在,我想添加第二个表来存储不同的数据。我可以毫无问题地添加注释,并且注释表的创建方式与路由表类似。我只是简单地“复制”并编辑了给定的代码,但是当我尝试插入到新表中时,出现错误消息: “ 0ERROR / Database(370):android.database
问题内容: jQuery在表中添加最后一行作为最后一行的最佳方法是什么? 这可以接受吗? 您可以向这样的表中添加什么内容(例如输入,选择,行数)是否有限制? 问题答案: 您所建议的方法并不能保证能为您提供所需的结果- 例如,如果有,该怎么办? 您将得到以下结果: 因此,我建议使用这种方法: 只要方法是有效的HTML,就可以在方法中包括任何内容,包括上面示例中的多行。 更新: 在最近对该问题进行的活
问题内容: 我正在对Apache JMeter中的应用程序进行压力测试。 我想到了调用register user方法,它将在数据库中添加用户。但是,如果电子邮件已经存在,则数据库操作不会 发生。 如何在身体数据中添加随机数?还是有其他方法可以对与数据库连接的应用程序进行压力测试? 控制器代码: 问题答案: 将随机变量 与变量名emailValue一起使用,并在请求中发送$ {emailValu