【问题标题】:DataTables: alterning the output after the table has been built via jsonDataTables:通过 json 构建表后更改输出
【发布时间】:2016-06-03 11:16:08
【问题描述】:

我最近完成了从用 HTML 构建表格并使用 DataTables 重绘表格到从 JSON 填充数据的转变。

然而,我正在努力弄清楚如何替换写入 dom 的数据。

例子(不是一个真实的例子哈哈): 我在 columnA 中有一个字符串,它的描述内容为...

使用引号按住 shift 并按 2,这将使 它们出现,就像这样“

如果我尝试以 JSON 格式发送该句子,则 JSON 将变为无效。我解决这个问题的方法是在创建 JSON 时将'"'替换为'引号'。这工作正常并且 JSON 是有效的,但这意味着句子现在读取...

使用引号按住 shift 并按 2,这将使 它们出现,如引号

理想情况下,我需要的是相关语法来改变 DataTables 在 dom 中写入的内容。 JSON 还编写了带有自定义属性的 span 元素,这些属性还可能包含引号,因此我不能只更改单元格本身。

我目前写表的代码如下:

                    $("#table9").DataTable({
                        "sScrollX": "90%",
                        "sScrollXInner": "100%",
                        "ajax": "Ajax.asp?RT=weeklyData",
                        "order": [[ 0, "desc" ]]
                    });

我可以在渲染 DataTable 后对整个 dom 进行全面搜索,然后替换有问题的短语,但这似乎非常浪费和低效。

我们将不胜感激任何更好的解决方案

先谢谢各位了

elbofor

【问题讨论】:

    标签: jquery json datatable


    【解决方案1】:

    Datatables 在这种情况下提供了一些选项。结帐:

    https://datatables.net/reference/option/columns.render https://datatables.net/reference/option/columns.createdCell

    如果我是你,我可能会使用 createdCell 选项在 td 元素附加到 DOM 之前对其进行操作。

    $("#table9").DataTable({
        "sScrollX": "90%",
        "sScrollXInner": "100%",
        "ajax": "Ajax.asp?RT=weeklyData",
        "order": [[ 0, "desc" ]],
        "columnDefs": [ {
            "targets": 0,
            "createdCell": function(td, cellData, rowData, row, col){
                $(td).html($(td).html().replace(/quotation-mark/g,"quotation-mark-replacement"));
            }
        }]
    });
    

    【讨论】:

    • 感谢William 的回复,现在就去看看,看看我的进展如何:) 一旦我可以确认,我会接受作为答案。 (我希望数据表团队聘请一位网站作家将文档转换为英语而不是纯开发人员语言)
    • 我有一个问题,我需要指定表格中的所有列吗?如果是这样,我假设我需要循环遍历或单独添加每一列?
    • 实际上,查看文档我可能根本不声明列并省略“数据”,然后仅使用 createdCell 自行解析所有单元格datatables.net/reference/option/columns.createdCell
    • columns 属性是一个数组,您可以将所有列设置添加到该数组。该选项允许您指定要显示的 json 的哪些部分,而无需完全构建 DOM。如果您不想这样做,我认为您可以使用 columnDefs 而不是列。但是对于 columnsDefs,您需要使用列索引而不是 json 属性作为目标。
    • 感谢@William 对差异的澄清 :),我没有在 JSON 中声明列名,因此使用索引对我来说更容易。正在通过更改 index2 对其进行测试,但它没有触发。对代码的 .replace() 部分有什么想法吗?以下是我目前所拥有的:"ajax": "Ajax.asp?RT=weeklyData", "columnDefs": [ { "targets": 2, "createdCell": function(td, cellData, rowData, row, col){ $(td).replace(/quotation-mark/g,"test"); } }], "order": [[ 0, "desc" ]]
    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多