我正在使用jquery DataTables(版本1.10)的页面上工作。 TableData源当前仅作为呈现页面上的HTML表发送,并且工作正常。但是,我希望能够扩展行以显示详细信息。
非常类似于示例Here
但是,我目前使用的网站尚未设置任何类型的网络服务,因此我无法进行ajax调用以获取扩展信息,例如示例使用
有没有办法可以在完全呈现的页面上提供父子关系的所有必要信息?
我可以以某种方式嵌套表数据来获取此信息,还是告诉DataTables使每个其他表行成为上一个表的子项?
我在datatables论坛上发布了同样的问题:Question
答案 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)%>