代码之家  ›  专栏  ›  技术社区  ›  Chapo

JQuery/Javascript中DataTable列名中的特殊字符

  •  0
  • Chapo  · 技术社区  · 8 年前

    编辑 :我已创建此 fiddle 这说明了问题所在。

    我用以下方式定义列(伪代码,请不要告诉我声明变量)

    var cols = [];
    cols.push({
        data:theNameWithSpecialCharacters,
        title:theNameWithSpecialCharacters,
        render: $.fn.dataTable.render.number(",",".",3)
    });
    
    myDataTable = $('#theDataTable').DataTable({
        columns: cols,
        data: someDataInCorrectFormat
    }).draw();
    

    datatable已正确呈现,但它不显示有一些特殊字符的列的值( [ ] 在我的情况下)在列名中。

    欢迎大家帮忙。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Shiffty    8 年前

    如果您正在使用 data 选项作为字符串,括号将被解释为数组表示法。数据表 documentation 声明如下:

    DataTables可以自动组合来自数组源的数据,将数据与两个括号之间提供的字符连接起来。例如:name[,]将提供一个与源数组分隔的逗号空间列表。如果括号之间未提供字符,则返回原始数组源。

    所以你的 data: "[bla]" 正在寻找一个未命名数组(该数组不存在,因此列为空)以显示其元素之间的bla。不幸的是,似乎没有办法摆脱字符串中的括号。 最简单的解决方法是使用 数据 并从对象中获取值。

    cols.push({
        data: function(row) {
          return row["[bla]"];
        },
        title:"[bla]",
        render: $.fn.dataTable.render.number(",",".",3)
    });
    

    这是您的更新 fiddle .

    编辑: 如果您不知道列名称,如注释中提到的OP,那么可以将data函数与列的索引一起使用。

    cols.push({
    data: function(row, type, set, meta) {
      return row[theColumns[meta.col].theColumnName];
    },
    title: theColumns[i].theColumnName,
    render: $.fn.dataTable.render.number(",",".",3)
    });
    

    另一个 fiddle .