如何将控件项添加到数据表的第一列

时间:2018-09-24 14:42:37

标签: javascript jquery datatables

我有此数据表声明:

table = $("#table").DataTable({
    "ajax": {
        "url": '@Url.Action("Search", @ViewContext.RouteData.Values["controller"].ToString())',
        "type": "POST",
        "data": function(d) {},
        "datatype": "json"
    },
    "language": {
        "search": "",
        "searchPlaceholder": " Search"
    },
    "select": {
        "style": 'multi'
    },
    "ordering": true,
    "lengthChange": false,
    "columns": [{
        "data": "",
        "targets": 0,
        "className": "control",
        "orderable": false,
        "searchable": false
    }, {
        "data": function(data, type, row, meta) {
            var url = '@Url.Action("Read", @ViewContext.RouteData.Values["controller"].ToString())/' + data.Id;
            return "<a href='" + url + "'>" + data.Application + "</i></a>"
        },
        "name": "Application"
    }, {
        "data": "Logged",
        "name": "Logged",
        "render": function(data) {
            var d = moment(data).format("YYYY-MM-DD hh:mm:ss");
            return d;
        }
    }, {
        "data": "Level",
        "name": "Level"
    }, {
        "data": "Exception",
        "name": "Exception"
    }, {
        "data": "Message",
        "name": "Message"
    }, {
        "data": "UserName",
        "name": "UserName"
    }, {
        "data": "ServerName",
        "name": "ServerName"
    }, ],
    "responsive": {
        "details": {
            "type": "column"
        }
    },
    "processing": true,
    "serverSide": true,
}).columns.adjust().responsive.recalc();
new $.fn.dataTable.FixedHeader(table);

这是我的表头声明:

<thead>
    <tr>
        <th></th>
        <th>Application</th>
        <th>Logged</th>
        <th>Level</th>
        <th>Exception</th>
        <th>Message</th>
        <th>UserName</th>
        <th>ServerName</th>
    </tr>
</thead>

这个想法是,第一列或目标0应该位于按钮所在的位置以展开或折叠该行。但是,当我运行应用程序时,出现此错误

  

DataTables警告:表id = table-请求的未知参数”用于第0行第0列。有关此错误的更多信息,请参见http://datatables.net/tn/4

说我的第0列参数不能为空。但是我不确定应该在里面放什么。

此外,由于某种原因,即使该列被禁用,排序箭头仍会出现。但是,单击时箭头不会改变或没有任何作用。

enter image description here

1 个答案:

答案 0 :(得分:0)

您有8列,但其中只有7列的数据。因为您正在使用服务器端处理,并且该行没有数据,所以需要将"defaultContent": ""添加到列选项中,如下所示:

 "columns": [{
        "data": "",
        "targets": 0,
        "className": "control",
        "orderable": false,
        "searchable": false,
        "defaultContent": ""
    }, 

使用"data": null可以达到相同的目的,但是如果不处理null值,则很可能会返回[object Object]