DataTables:标题中带点(。)的列未正确显示

时间:2015-11-13 11:16:32

标签: json datatable datatables datatables-1.10 jquery-datatables-editor

DataTables似乎将点(.)视为特殊字符,并且不会显示列中的列。

有没有解决方法如何保持点数并使用某种转义字符?

错误是:请求的未知参数' Doc。'对于第0行,第0列

我的JSON DataTable初始化程序:

{
    "columns": [
        {
            "data": "Doc.",
            "title": "Doc."
        },
        {
            "data": "Order no.",
            "title": "Order no."
        }
    ],
    "data": [
        {
            "Doc.": "564251422",
            "Order no.": "56421"
        },
        {
            "Doc.": "546546545",
            "Order no.": "98745"
        }
    ]
}

3 个答案:

答案 0 :(得分:6)

当数据属性名称中有点时,dataTables将查找嵌套数据属性。就像有function addToGroups() { var results = [] collectGroups(0) function collectGroups(offset){ //async API call sc.get('/tracks/'+ CURRENT_TRACK_ID +'/groups?limit=50&offset=' + offset , OAUTH_TOKEN, function(error, data){ if (data.length > 0){ results.push(data) // keep requesting new groups collectGroups(offset + 50) } // finished else { //finish promise } }) } } 属性一样。当您拥有自动化脚本时 - 服务器正在分发不一定是为dataTables设计的JSON,您可以在将数据传递给dataTable之前对其进行“清理”。

我从昨天开始回答并添加了两个功能:Doc.<something>sanitizeDatasanitizeColumns从密钥中删除所有点和空格,sanitizeDatasanitizeColumns定义中删除空格和点:

columns.data

演示 - &gt;的 this

答案 1 :(得分:2)

试试这个:

"columns": [
    {
        "data": "Doc&#46;",
        "title": "Doc&#46;"
    },
    {
        "data": "Order no&#46;",
        "title": "Order no&#46;"
    }
],
"data": [
    {
        "Doc&#46;": "564251422",
        "Order no&#46;": "56421"
    },
    {
        "Doc&#46;": "546546545",
        "Order no&#46;": "98745"
    }
]

虽然这也有效:

"columns": [
    {
        "data": "Doc.",
        "title": "Doc."
    },
    {
        "data": "Order no.",
        "title": "Order no."
    }
],
"data": [
    {
        "Doc": "564251422",
        "Order no": "56421"
    },
    {
        "Doc": "546546545",
        "Order no": "98745"
    }
]

答案 2 :(得分:0)

我知道我参加晚会很晚,但是我解决这个问题的方法是替换所有的“。”与“ \\”。在数据表选项的“列”值中。

数据表仍然可以找到带有句点的值,并且不会崩溃。我在这里找到此信息:https://datatables.net/reference/option/columns.data

我在将项目添加到列对象中时所做的全部操作是

for(var i =0; i < columnNames.length;i++){
    //replaces all "." with "\\." which datatables ignores
    columnNames[i] = columnNames[i].replace(/\./g,'\\.');
}

//other code goes here

var datatableOptions = {
        'data': myData,
        columns: tableColumns,
    };