json - 如何创建具有多个子行(嵌套表)的 jQuery 数据表?

标签 json asp.net-mvc linq jquery-ui datatables

问题:
我需要创建一个带有嵌套表格格式的表格。当用户单击加号按钮时,它应该显示嵌套表。如果他们点击减号按钮,它应该隐藏。

我已经完成了 jquery 数据表,它工作正常。但我无法为子表显示多行。我已经尝试了很多次我无法显示正确的格式。

这是我提到的创建表格的链接
https://datatables.net/examples/api/row_details.html

数据库:
来自数据库的实际数据按照以下格式,我已将 JSON 格式转换为显示:
enter image description here

C# 代码 :

 return new JsonResult { Data = new { data = test }, JsonRequestBehavior = 
JsonRequestBehavior.AllowGet };

我需要这样一个带有嵌套表的输出:
enter image description here

用户界面代码:
/* Formatting function for row details - modify as you need */
 function format ( d ) {
   // `d` is the original data object for the row
  return '<table cellpadding="5" cellspacing="0" border="0" style="padding- 
left:50px;">'+
      '<tr>' +
            '<td>City Name</td>' +
            '<td>Permission</td>' +
        '</tr><tr>' +
            '<td>' + d.City+ '</td>' +
            '<td>' + d.Permission+ '</td>' +
        '</tr>' +
'</table>';
}

$(document).ready(function() {
var table = $('#example').DataTable( {
    "ajax": "../ajax/data/objects.txt",
    "columns": [
        {
            "className":      'details-control',
            "orderable":      false,
            "data":           null,
            "defaultContent": ''
        },
        { "data": "UserName" },
        { "data": "Email" },
        { "data": "UserId" },

    ],
    "order": [[1, 'asc']]
} );

// Add event listener for opening and closing details
$('#example tbody').on('click', 'td.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row( tr );

    if ( row.child.isShown() ) {
        // This row is already open - close it
        row.child.hide();
        tr.removeClass('shown');
    }
    else {
        // Open this row
        row.child( format(row.data()) ).show();
        tr.addClass('shown');
    }
  } );
 } );

JSON 格式:
{"data":[
{"UserId":"ABC","UserName":"Peter","Email":"abc@gmail.com.com","CityName":"Chennai","Permission":"Manager,LocalUser"},
{"UserId":"ABC","UserName":"Peter","Email":"abc@gmail.com.com","CityName":"Bangalore","Permission":"Admin,LocalUser"},
{"UserId":"xyz","UserName":"Haiyan","Email":"abc2@gmail.com.com","CityName":"Bangalore","Permission":"LocalUser"},
{"UserId":"xyz","UserName":"Haiyan","Email":"abc2@gmail.com.com","CityName":"Chennai","Permission":"LocalUser,Manager"}]}

使用的技术:ASP.Net MVC5

我准备使用 linq 或修改 JSON 数据格式的任何其他方式。

最佳答案

您可以像这样将 Id 分配给您的子表

function format ( d ) {
   // `d` is the original data object for the row
  return '<table id="childtable" cellpadding="5" cellspacing="0" border="0" style="padding- 
left:50px;">'+
      '<tr>' +
            '<td>City Name</td>' +
            '<td>Permission</td>' +
        '</tr><tr>' +
            '<td>' + d.City+ '</td>' +
            '<td>' + d.Permission+ '</td>' +
        '</tr>' +
'</table>';
}

并做你为你的父表做的同样的事情
var childTable = $('#childtable').DataTable( {
    "ajax": "../ajax/data/objects.txt",
    "columns": [

    ],
    "order": [[1, 'asc']]
} );

在列部分绑定(bind)您的 json 对象。

关于json - 如何创建具有多个子行(嵌套表)的 jQuery 数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53389883/

相关文章:

java - 尝试使 json 在 jsp 页面中工作时出现错误。如何调试这个?

html - 部署后不显示操作链接上的 MVC4 图像

c# - 如何让 LINQ 返回具有给定属性最大值的对象?

c# - linq - 如何查询一个查询源中不在另一个查询源中的项目?

jquery - 将 json 对象解析为 ruby​​ 对象时出错

json - 在 R 中展平深层嵌套的 json

asp.net-mvc - 如何为 View 模型创建具有属性的 ActionLink

c# - 在 Helper 类中的数据实体之间切换

javascript - Instagram.com/username/media 不再有效

javascript - 通过选择下拉菜单和按钮单击来隐藏/显示 div