子行数据表 - 行数据值未定义

时间:2015-08-19 12:11:31

标签: javascript html asp.net-mvc-4 datatables

我有一个数据表,其子行由以下函数填充:

$('#myDataTable tbody').on('click', 'td.details-control', function () {
            console.log(table.row(this).data());
            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');
            }
        });

格式化功能:

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><strong>BLABLA1</td>' +
                '<td align="center">'+
                    d.BLABLA1 +
                '</td>'+

                '<td><strong>BLABLA2</td>' +
                '<td align="center">'+
                    d.BLABLA2+
                '</td>'+
            '</tr>' +
            '</table>';
        }

但是,当我显示页面并展开子行时,列的值是&#34;未定义&#34; ...

数据表中的行从模型(使用MVC 4)填充,如下所示:

<tbody>
        @foreach (var item in Model)
        {

            <tr>

                <td align="center">
                    @Html.DisplayFor(modelItem => item.BLABLA3)
                </td>
    .....</tr>}
    </tbody>

我想我错过了将row.data()加载到格式化函数中的方法....这样做的正确方法是什么?我已经检查了所有的文件,他们都使用我试过的......

2 个答案:

答案 0 :(得分:1)

是的,页面https://datatables.net/examples/api/row_details.html解释了我们必须写的内容,这很奇怪:

'<td>'+d.myrow+'</td>'+

但是,如果我这样做,则行的值为“未定义”,所以我必须写:

'<td>'+d["myrow"]+'</td>'+  

而且有效!

答案 1 :(得分:0)

显然我必须为每一行选择.data()返回的对象/数组的索引,以下代码对我有用.....(用子行的整数索引替换KNOWN_INDEX ...)

<tr>'+
                '<td><strong>BLABLA1</td>' +
                '<td align="center">'+
                    d[KNOWN_INDEX]+
                '</td>'+
.
.
.
'</tr>'+