使用JQuery DataTables动态生成列,其中table基于模型

时间:2018-04-12 09:51:00

标签: asp.net-mvc html-table datatables

在ASP.Net MVC应用程序中,我有一个基于传递给视图的模型的表。出于这个原因,该表不是基于Json,并且这些字段没有我可以在脚本的' [' []部分中引用的列名称(或者至少我不知道怎么样!...)。尽管如此,该表工作正常,但我无法设法生成计算字段。在所有各种实验中,我不断得到NaN或未定义的结果,具体取决于各种尝试,我明白这是因为显然我没有引用正确的数据值,但如果我不这样做,我怎么能这样做? ; t有列名? 该表格结构合理,thead,tbody和tfoot具有相同的列数。这是表的html:

<table id="mainTable" class="table table-hover">
    <thead>
        <tr>
            <th>@Html.DisplayNameFor(model => model.Value1)</th>
            <th>@Html.DisplayNameFor(model => model.Value2)</th>
            <th>test</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.Value1)</td>
                <td>@Html.DisplayFor(modelItem => item.Value2)</td>
                <td></td>
            </tr>
        }
    </tbody>
    <tfoot><tr><th></th><th></th><th></th></tr></tfoot>
</table>

第一列和第二列的渲染功能正常工作。第三列是我试图计算并显示第一列和第二列之间的差异的地方,以及我得到NaN或未定义的地方。这是脚本:

<script>
    $(document).ready(function () {
        // DataTable
        var table = $('#mainTable').DataTable({
            responsive: true,
            columns: [
            { render: function (data, type, row) { return data + '$' } },
            { render: function (data, type, row) { return data + '$' } },
            { render: function (data, type, row) { return (row.Value1 - row.Value2) + '$' }}]
        });
    });
</script>

这是我在这次特定尝试中获得的结果。不幸的是,我尝试了其他版本的结果令人失望:

Value 1  Value 2  test
200.00$  100.00$  NaN$
etc...

我也试过这个:

columns: [ { data: 'Value1', render: function (data, type, row) { return data + '$' } } ]

和这个

columns: [ { name: 'Value1', render: function (data, type, row) { return data + '$' } } ]

和这个

columns: [ { data: 'Value1', name: 'Value1', render: function (data, type, row) { return data + '$' } } ]

但在所有情况下整个脚本都失败了。 我还尝试用columnDefs [...]分配名称,但没有运气。

有人会如此友善地告诉我我做错了什么,或者我应该做些什么来使这项工作?

谢谢!

0 个答案:

没有答案