使用外部数据集和数据呈现器,使用数据表时标签出现问题

时间:2019-06-13 19:45:09

标签: jquery datatables yadcf

我有一个项目,在这里使用DataTables和yadcf。 到目前为止,在生成DOM时,我一直使用PHP填充表。 现在,我想使用AJAX来填充表,该表工作正常,只是它破坏了yadcf的“标签”功能。如果我希望它能正常工作,则需要通过AJAX发送完整的HTML格式的标签列表。 我希望它只是将标签作为数组发送,并在DataTables中使用“ render”功能将其转换为单个DOM元素。

我试图在yadcf的“ column_data_type”中同时使用“ html”和“ rendered_html”,但是没有办法解决。

var dataset = [{"name":"B. Gates", "tags":["js", "css", "asp"]},{"name":"S. Jobs", "tags":["js", "css", "php"]}];

var table = $('table').DataTable({
    data: dataset,
    columns: [
        {"data": "name"},
        {
            "data": "tags",
            "render": function(data, row, type){
                var tags = '';
                for (i=0; i<data.length; i++)
                {
                    tags += '<span class="badge badge-secondary">' + data[i] + '</span>&nbsp;';
                }
                return tags;
            }
        }
    ]
});

yadcf.init(table, [
    {
        column_number : 1,
        column_data_type: "rendered_html", //html
        html_data_type: "text",
        filter_default_label: "Select tag"
    }
]);

我在这里做了一个小提琴的例子:https://jsfiddle.net/majbom/3d4npzsr/1/

在“ column_data_type”中使用“ html”时,在填充表格后,标签列表仍为空。 当我使用“ rendered_html”时,我得到一个列表,其中包含表中所有表示的标签组合。 我想要的是表格中所有单独代表标签的列表。

预先感谢:)

1 个答案:

答案 0 :(得分:0)

对于该列,您应该在yadcf init中使用text_data_delimiter: String.fromCharCode(160),使用String.fromCharCode(160)的原因是因为以某种方式&nbsp;被用作字符串中的分隔符(而不是普通的{{ 1}}空间

https://jsfiddle.net/vedmack/4sen9xhu/5/