使用外部数据集和数据呈现、使用数据表时的标记问题



>我有一个项目,我在其中使用DataTables和yadcf。 到目前为止,我在生成 DOM 时使用 PHP 来填充表。 现在我想使用 AJAX 来填充表格,它工作正常,除了它破坏了 yadcf "标签"功能。如果我希望它工作,我需要通过 AJAX 发送完整的 HTML 格式标记列表。 我希望它只将标签作为数组发送,并使用 DataTable 中的"渲染"函数将它们转换为单独的 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"时,我得到一个列表,其中包含表中标签的所有表示组合。 我想要的是表中所有单个表示标签的列表。

提前致谢:)

您应该在该列的yadcf init中使用text_data_delimiter: String.fromCharCode(160),使用String.fromCharCode(160)的原因是因为&nbsp;以某种方式被用作字符串中的分隔符(而不是正常的空格)

喜欢这个

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

https://jsfiddle.net/wcbkzxnt/1/